From 470d676a0e21c87c2ddf50fc8e5c6dba9bd70e74 Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Thu, 24 Jul 2025 03:42:51 +0800 Subject: [PATCH 1/3] pre-commit: PR137297 --- 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..a02febd01ed 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/137297 export COMPTIME_MODE=0 # Please rebase manually From ad0cd6ade0ab73f19823b12850e378773bb8a6eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 20:04:03 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/dauNpn2.ll | 45 +-- bench/abc/optimized/extraBddMisc.ll | 63 ++-- bench/abc/optimized/ifMap.ll | 49 ++-- bench/abc/optimized/mapperUtils.ll | 91 +++--- bench/abc/optimized/mpmLib.ll | 21 +- bench/abseil-cpp/optimized/crc.ll | 32 +-- bench/actix-rs/optimized/4pmtvrahn6eloepe.ll | 65 ++--- bench/arrow/optimized/time.ll | 50 ++-- bench/assimp/optimized/ASEParser.ll | 181 ++++++------ bench/boost/optimized/formatters_cache.ll | 263 ++++++++--------- bench/box2d/optimized/linux_joystick.ll | 140 ++++----- .../optimized/btCollisionDispatcher.ll | 119 ++++---- .../optimized/btDeformableBodySolver.ll | 196 +++++++------ bench/clamav/optimized/Ppmd7.ll | 39 +-- bench/clamav/optimized/pe_icons.ll | 29 +- bench/clap-rs/optimized/5651dp9k16h53y8x.ll | 169 +++++------ bench/cmake/optimized/nghttp2_hd_huffman.ll | 92 +++--- bench/darktable/optimized/blend.ll | 66 +++-- bench/darktable/optimized/colordata.ll | 58 ++-- bench/darktable/optimized/exif_gps.ll | 28 +- bench/darktable/optimized/identify_tools.ll | 14 +- bench/darktable/optimized/libraw_c_api.ll | 19 +- bench/duckdb/optimized/aria.ll | 146 +++++----- bench/ffmpeg/optimized/aptxdec.ll | 4 +- bench/ffmpeg/optimized/msmpeg4_vc1_data.ll | 22 +- bench/ffmpeg/optimized/pafvideo.ll | 25 +- bench/ffmpeg/optimized/vf_fftdnoiz.ll | 23 +- bench/flac/optimized/lpc.ll | 57 ++-- .../CompressionContextPoolSingletons.ll | 4 +- bench/freetype/optimized/truetype.ll | 251 ++++++++-------- bench/graphviz/optimized/mincross.ll | 65 ++--- bench/gromacs/optimized/boxdeformation.ll | 37 +-- bench/gromacs/optimized/hxprops.ll | 43 +-- bench/gromacs/optimized/pbc_simd.ll | 11 +- bench/gromacs/optimized/sm_simple.ll | 26 +- bench/grpc/optimized/executor.ll | 69 ++--- bench/hermes/optimized/rustgen.ll | 3 +- bench/hwloc/optimized/common-ps.ll | 233 +++++++-------- bench/icu/optimized/cecal.ll | 9 +- bench/image-rs/optimized/5oy2v8fghrh79s8.ll | 160 ++++++----- bench/jq/optimized/jv_print.ll | 2 +- .../libigl/optimized/canonical_quaternions.ll | 18 +- bench/libjpeg-turbo/optimized/jquant1.ll | 188 ++++++------ bench/libwebp/optimized/filter_enc.ll | 113 ++++---- bench/libwebp/optimized/vp8_dec.ll | 41 +-- bench/lief/optimized/aria.ll | 128 +++++---- bench/linux/optimized/forcedeth.ll | 6 +- bench/linux/optimized/intel_guc_submission.ll | 8 +- .../optimized/PreISelIntrinsicLowering.ll | 47 +-- bench/llvm/optimized/Process.ll | 12 +- bench/llvm/optimized/X86InstrInfo.ll | 13 +- bench/llvm/optimized/X86TargetMachine.ll | 36 +-- bench/lua/optimized/lstring.ll | 65 +++-- bench/luau/optimized/AssemblyBuilderX64.ll | 216 +++++++------- bench/lvgl/optimized/lv_ime_pinyin.ll | 183 ++++++------ bench/lvgl/optimized/lv_matrix.ll | 213 +++++++------- bench/memcached/optimized/thread.ll | 189 ++++++------ bench/meshlab/optimized/cubemap.ll | 86 +++--- bench/meshlab/optimized/filter_layer.ll | 215 +++++++------- bench/meshlab/optimized/mesh_model.ll | 213 +++++++------- bench/meshoptimizer/optimized/spatialorder.ll | 182 ++++++------ bench/minetest/optimized/CGUIListBox.ll | 14 +- bench/minetest/optimized/voxelalgorithms.ll | 18 +- bench/mitsuba3/optimized/struct.ll | 164 +++++------ bench/oiio/optimized/imageio.ll | 73 ++--- bench/oiio/optimized/psdinput.ll | 67 ++--- bench/oniguruma/optimized/unicode.ll | 8 +- bench/open3d/optimized/ImageCPU.ll | 81 +++--- bench/open3d/optimized/ScalableTSDFVolume.ll | 18 +- bench/opencc/optimized/bit-vector.ll | 46 +-- bench/opencv/optimized/AKAZEFeatures.ll | 113 ++++---- bench/opencv/optimized/ap3p.ll | 83 +++--- bench/opencv/optimized/trackerKCF.ll | 51 ++-- bench/openjdk/optimized/AlphaMath.ll | 82 +++--- bench/openjdk/optimized/archiveBuilder.ll | 22 +- bench/openjdk/optimized/assembler_x86.ll | 108 +++---- bench/openjdk/optimized/castnode.ll | 33 +-- bench/openjdk/optimized/img_globals.ll | 47 +-- bench/openspiel/optimized/CalcTables.ll | 120 ++++---- bench/openspiel/optimized/PBN.ll | 55 ++-- bench/openssl/optimized/quic_ackm.ll | 185 ++++++------ bench/openssl/optimized/quic_cfq_test.ll | 202 ++++++------- bench/openusd/optimized/av1_dx_iface.ll | 26 +- bench/openusd/optimized/blockd.ll | 60 ++-- bench/openusd/optimized/matrix2d.ll | 8 +- bench/openusd/optimized/seg_common.ll | 7 +- bench/ozz-animation/optimized/skinning_job.ll | 16 +- bench/pbrt-v4/optimized/color.ll | 147 +++++----- bench/pbrt-v4/optimized/vecmath.ll | 196 ++++++------- bench/php/optimized/in_body.ll | 175 +++++------ bench/pocketpy/optimized/linalg.ll | 20 +- bench/postgres/optimized/dt_common.ll | 133 ++++----- bench/postgres/optimized/localtime.ll | 94 +++--- bench/postgres/optimized/tidbitmap.ll | 17 +- bench/postgres/optimized/xlogstats.ll | 27 +- bench/proj/optimized/defmodel.ll | 154 +++++----- bench/proj/optimized/healpix.ll | 153 +++++----- bench/proj/optimized/test_defmodel.ll | 142 ++++----- bench/qemu/optimized/ahci.ll | 95 +++--- bench/qemu/optimized/job.ll | 184 ++++++------ .../exponentialfittinghestonengine.ll | 5 +- .../perturbativebarrieroptionengine.ll | 20 +- bench/ruby/optimized/cp949.ll | 25 +- bench/ruby/optimized/euc_tw.ll | 103 +++---- bench/ruby/optimized/regcomp.ll | 79 ++--- bench/sdl/optimized/SDL_alsa_audio.ll | 81 +++--- bench/sdl/optimized/SDL_audioresample.ll | 144 +++++----- bench/sdl/optimized/SDL_gamepad.ll | 124 ++++---- bench/slurm/optimized/cpu_frequency.ll | 227 ++++++++------- bench/slurm/optimized/proc_args.ll | 173 +++++------ bench/spike/optimized/plic.ll | 97 +++---- bench/stb/optimized/stb_ds.ll | 125 ++++---- bench/stb/optimized/stb_image_resize2.ll | 138 ++++----- bench/tev/optimized/UberShader.ll | 45 +-- .../optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll | 87 +++--- bench/verilator/optimized/V3PreProc.ll | 271 +++++++++--------- bench/wireshark/optimized/packet-ipmi-se.ll | 100 +++---- bench/wireshark/optimized/packet-rrc.ll | 15 +- bench/wireshark/optimized/tvbuff_hpackhuff.ll | 84 +++--- bench/yaml-cpp/optimized/stream.ll | 216 +++++++------- .../optimized/38cn6p2m6864jrrxog4mr8xwk.ll | 75 ++--- .../optimized/738kk4f8xx4axqteya4t2w4qw.ll | 31 +- 122 files changed, 5476 insertions(+), 5224 deletions(-) diff --git a/bench/abc/optimized/dauNpn2.ll b/bench/abc/optimized/dauNpn2.ll index ebbb521f192..786e6bc4551 100644 --- a/bench/abc/optimized/dauNpn2.ll +++ b/bench/abc/optimized/dauNpn2.ll @@ -3339,8 +3339,8 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname %5 = getelementptr inbounds nuw i8, ptr %0, i64 288 br label %.preheader -.preheader: ; preds = %1, %52 - %indvars.iv50 = phi i64 [ 0, %1 ], [ %indvars.iv.next51, %52 ] +.preheader: ; preds = %1, %53 + %indvars.iv50 = phi i64 [ 0, %1 ], [ %indvars.iv.next51, %53 ] %6 = load i32, ptr %3, align 8, !tbaa !81 %7 = icmp sgt i32 %6, 0 br i1 %7, label %.lr.ph, label %._crit_edge.thread @@ -3379,7 +3379,7 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname %25 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %24, i1 true) %26 = sub nuw nsw i32 32, %25 %27 = zext nneg i32 %26 to i64 - %28 = getelementptr inbounds nuw [13 x [15 x i32]], ptr %2, i64 0, i64 %indvars.iv50, i64 %27 + %28 = getelementptr inbounds nuw [15 x i32], ptr %9, i64 0, i64 %27 %29 = load i32, ptr %28, align 4, !tbaa !40 %30 = add nsw i32 %29, 1 store i32 %30, ptr %28, align 4, !tbaa !40 @@ -3409,35 +3409,36 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname %41 = sitofp i32 %.1 to double %42 = fdiv double %37, %41 %43 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26, double noundef %42) - br label %44 - -44: ; preds = %36, %51 - %indvars.iv46 = phi i64 [ 0, %36 ], [ %indvars.iv.next47, %51 ] - %45 = getelementptr inbounds nuw [13 x [15 x i32]], ptr %2, i64 0, i64 %indvars.iv50, i64 %indvars.iv46 - %46 = load i32, ptr %45, align 4, !tbaa !40 - %.not = icmp eq i32 %46, 0 - br i1 %.not, label %49, label %47 - -47: ; preds = %44 - %48 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27, i32 noundef %46) - br label %51 + %44 = getelementptr inbounds nuw [13 x [15 x i32]], ptr %2, i64 0, i64 %indvars.iv50 + br label %45 + +45: ; preds = %36, %52 + %indvars.iv46 = phi i64 [ 0, %36 ], [ %indvars.iv.next47, %52 ] + %46 = getelementptr inbounds nuw [15 x i32], ptr %44, i64 0, i64 %indvars.iv46 + %47 = load i32, ptr %46, align 4, !tbaa !40 + %.not = icmp eq i32 %47, 0 + br i1 %.not, label %50, label %48 + +48: ; preds = %45 + %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27, i32 noundef %47) + br label %52 -49: ; preds = %44 - %50 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, ptr noundef nonnull @.str.29) - br label %51 +50: ; preds = %45 + %51 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, ptr noundef nonnull @.str.29) + br label %52 -51: ; preds = %47, %49 +52: ; preds = %48, %50 %indvars.iv.next47 = add nuw nsw i64 %indvars.iv46, 1 %exitcond49.not = icmp eq i64 %indvars.iv.next47, 15 - br i1 %exitcond49.not, label %52, label %44, !llvm.loop !103 + br i1 %exitcond49.not, label %53, label %45, !llvm.loop !103 -52: ; preds = %51 +53: ; preds = %52 %putchar = tail call i32 @putchar(i32 10) %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1 %exitcond53.not = icmp eq i64 %indvars.iv.next51, 13 br i1 %exitcond53.not, label %._crit_edge.thread, label %.preheader, !llvm.loop !104 -._crit_edge.thread: ; preds = %.preheader, %._crit_edge, %52 +._crit_edge.thread: ; preds = %.preheader, %._crit_edge, %53 call void @llvm.lifetime.end.p0(i64 780, ptr nonnull %2) #30 ret void } diff --git a/bench/abc/optimized/extraBddMisc.ll b/bench/abc/optimized/extraBddMisc.ll index 5b4c93ea80c..d999f438482 100644 --- a/bench/abc/optimized/extraBddMisc.ll +++ b/bench/abc/optimized/extraBddMisc.ll @@ -3714,47 +3714,50 @@ define void @Extra_GraphExperiment() local_unnamed_addr #0 { %3 = load ptr, ptr %2, align 8, !tbaa !63 tail call void @Cudd_Ref(ptr noundef %3) #19 %4 = getelementptr inbounds nuw i8, ptr %1, i64 40 - br label %.lr.ph.preheader + br label %5 -.lr.ph.preheader: ; preds = %._crit_edge, %0 +5: ; preds = %0, %._crit_edge %indvars.iv47 = phi i64 [ 0, %0 ], [ %indvars.iv.next48, %._crit_edge ] - %.03643 = phi ptr [ %3, %0 ], [ %15, %._crit_edge ] - %5 = load ptr, ptr %4, align 8, !tbaa !34 - tail call void @Cudd_Ref(ptr noundef %5) #19 - %6 = getelementptr inbounds nuw [5 x [5 x i32]], ptr @__const.Extra_GraphExperiment.Edges, i64 0, i64 %indvars.iv47, i64 0 - %7 = load i32, ptr %6, align 4, !tbaa !31 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %8 = phi i32 [ %7, %.lr.ph.preheader ], [ %14, %.lr.ph ] - %.03542 = phi ptr [ %5, %.lr.ph.preheader ], [ %12, %.lr.ph ] - %9 = load ptr, ptr %4, align 8, !tbaa !34 - %10 = load ptr, ptr %2, align 8, !tbaa !63 - %11 = tail call ptr @cuddZddGetNode(ptr noundef nonnull %1, i32 noundef %8, ptr noundef %9, ptr noundef %10) #19 - tail call void @Cudd_Ref(ptr noundef %11) #19 - %12 = tail call ptr @Cudd_zddUnateProduct(ptr noundef nonnull %1, ptr noundef %.03542, ptr noundef %11) #19 + %6 = phi ptr [ @__const.Extra_GraphExperiment.Edges, %0 ], [ %17, %._crit_edge ] + %.03643 = phi ptr [ %3, %0 ], [ %16, %._crit_edge ] + %7 = load ptr, ptr %4, align 8, !tbaa !34 + tail call void @Cudd_Ref(ptr noundef %7) #19 + %8 = load i32, ptr %6, align 4, !tbaa !31 + %.not3940 = icmp eq i32 %8, 0 + br i1 %.not3940, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %5, %.lr.ph + %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %5 ] + %9 = phi i32 [ %15, %.lr.ph ], [ %8, %5 ] + %.03542 = phi ptr [ %13, %.lr.ph ], [ %7, %5 ] + %10 = load ptr, ptr %4, align 8, !tbaa !34 + %11 = load ptr, ptr %2, align 8, !tbaa !63 + %12 = tail call ptr @cuddZddGetNode(ptr noundef nonnull %1, i32 noundef %9, ptr noundef %10, ptr noundef %11) #19 tail call void @Cudd_Ref(ptr noundef %12) #19 + %13 = tail call ptr @Cudd_zddUnateProduct(ptr noundef nonnull %1, ptr noundef %.03542, ptr noundef %12) #19 + tail call void @Cudd_Ref(ptr noundef %13) #19 tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %.03542) #19 - tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %11) #19 + tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %12) #19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %13 = getelementptr inbounds nuw [5 x [5 x i32]], ptr @__const.Extra_GraphExperiment.Edges, i64 0, i64 %indvars.iv47, i64 %indvars.iv.next - %14 = load i32, ptr %13, align 4, !tbaa !31 - %.not39 = icmp eq i32 %14, 0 + %14 = getelementptr inbounds nuw [5 x i32], ptr %6, i64 0, i64 %indvars.iv.next + %15 = load i32, ptr %14, align 4, !tbaa !31 + %.not39 = icmp eq i32 %15, 0 br i1 %.not39, label %._crit_edge, label %.lr.ph, !llvm.loop !82 -._crit_edge: ; preds = %.lr.ph - %15 = tail call ptr @Cudd_zddUnion(ptr noundef nonnull %1, ptr noundef %.03643, ptr noundef %12) #19 - tail call void @Cudd_Ref(ptr noundef %15) #19 +._crit_edge: ; preds = %.lr.ph, %5 + %.035.lcssa = phi ptr [ %7, %5 ], [ %13, %.lr.ph ] + %16 = tail call ptr @Cudd_zddUnion(ptr noundef nonnull %1, ptr noundef %.03643, ptr noundef %.035.lcssa) #19 + tail call void @Cudd_Ref(ptr noundef %16) #19 tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %.03643) #19 - tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %12) #19 + tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %.035.lcssa) #19 %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 + %17 = getelementptr inbounds nuw [5 x [5 x i32]], ptr @__const.Extra_GraphExperiment.Edges, i64 0, i64 %indvars.iv.next48 %exitcond = icmp eq i64 %indvars.iv.next48, 4 - br i1 %exitcond, label %16, label %.lr.ph.preheader, !llvm.loop !83 + br i1 %exitcond, label %18, label %5, !llvm.loop !83 -16: ; preds = %._crit_edge - %17 = tail call i32 @Cudd_zddPrintMinterm(ptr noundef nonnull %1, ptr noundef %15) #19 - tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %15) #19 +18: ; preds = %._crit_edge + %19 = tail call i32 @Cudd_zddPrintMinterm(ptr noundef nonnull %1, ptr noundef %16) #19 + tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %16) #19 tail call void @Cudd_Quit(ptr noundef nonnull %1) #19 ret void } diff --git a/bench/abc/optimized/ifMap.ll b/bench/abc/optimized/ifMap.ll index 70095fc71b1..031928b6f2a 100644 --- a/bench/abc/optimized/ifMap.ll +++ b/bench/abc/optimized/ifMap.ll @@ -298,34 +298,35 @@ define float @If_CutDelaySpecial(ptr noundef readonly captures(none) %0, ptr nou %10 = getelementptr i8, ptr %.val, i64 8 %.val.val = load ptr, ptr %10, align 8, !tbaa !11 %11 = sext i32 %2 to i64 + %12 = getelementptr inbounds [2 x [3 x float]], ptr @If_CutDelaySpecial.Pin2Pin, i64 0, i64 %11 %wide.trip.count = and i64 %8, 255 - br label %12 - -12: ; preds = %.lr.ph, %18 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %18 ] - %.01518 = phi float [ 0xC415AF1D80000000, %.lr.ph ], [ %.015., %18 ] - %13 = getelementptr inbounds nuw [0 x i32], ptr %4, i64 0, i64 %indvars.iv - %14 = load i32, ptr %13, align 4, !tbaa !34 - %15 = sext i32 %14 to i64 - %16 = getelementptr inbounds ptr, ptr %.val.val, i64 %15 - %17 = load ptr, ptr %16, align 8, !tbaa !12 - %.not = icmp eq ptr %17, null - br i1 %.not, label %.critedge, label %18 - -18: ; preds = %12 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 92 - %20 = load float, ptr %19, align 4, !tbaa !36 - %21 = getelementptr inbounds [2 x [3 x float]], ptr @If_CutDelaySpecial.Pin2Pin, i64 0, i64 %11, i64 %indvars.iv - %22 = load float, ptr %21, align 4, !tbaa !40 - %23 = fadd float %20, %22 - %24 = fcmp ogt float %.01518, %23 - %.015. = select i1 %24, float %.01518, float %23 + br label %13 + +13: ; preds = %.lr.ph, %19 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %19 ] + %.01518 = phi float [ 0xC415AF1D80000000, %.lr.ph ], [ %.015., %19 ] + %14 = getelementptr inbounds nuw [0 x i32], ptr %4, i64 0, i64 %indvars.iv + %15 = load i32, ptr %14, align 4, !tbaa !34 + %16 = sext i32 %15 to i64 + %17 = getelementptr inbounds ptr, ptr %.val.val, i64 %16 + %18 = load ptr, ptr %17, align 8, !tbaa !12 + %.not = icmp eq ptr %18, null + br i1 %.not, label %.critedge, label %19 + +19: ; preds = %13 + %20 = getelementptr inbounds nuw i8, ptr %18, i64 92 + %21 = load float, ptr %20, align 4, !tbaa !36 + %22 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv + %23 = load float, ptr %22, align 4, !tbaa !40 + %24 = fadd float %21, %23 + %25 = fcmp ogt float %.01518, %24 + %.015. = select i1 %25, float %.01518, float %24 %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 %.critedge, label %12, !llvm.loop !41 + br i1 %exitcond.not, label %.critedge, label %13, !llvm.loop !41 -.critedge: ; preds = %12, %18, %3 - %.015.lcssa = phi float [ 0xC415AF1D80000000, %3 ], [ %.015., %18 ], [ %.01518, %12 ] +.critedge: ; preds = %13, %19, %3 + %.015.lcssa = phi float [ 0xC415AF1D80000000, %3 ], [ %.015., %19 ], [ %.01518, %13 ] ret float %.015.lcssa } diff --git a/bench/abc/optimized/mapperUtils.ll b/bench/abc/optimized/mapperUtils.ll index a94af332f70..04875e37112 100644 --- a/bench/abc/optimized/mapperUtils.ll +++ b/bench/abc/optimized/mapperUtils.ll @@ -599,77 +599,78 @@ define void @Map_MappingSetupTruthTables(ptr noundef captures(none) %0) local_un define void @Map_MappingSetupTruthTablesLarge(ptr noundef captures(none) %0) local_unnamed_addr #6 { br label %.preheader33 -.preheader33: ; preds = %1, %4 - %indvars.iv41 = phi i64 [ 0, %1 ], [ %indvars.iv.next42, %4 ] +.preheader33: ; preds = %1, %3 + %indvars.iv41 = phi i64 [ 0, %1 ], [ %indvars.iv.next42, %3 ] + %invariant.gep = getelementptr inbounds nuw [32 x i32], ptr %0, i64 0, i64 %indvars.iv41 br label %2 2: ; preds = %.preheader33, %2 %indvars.iv = phi i64 [ 0, %.preheader33 ], [ %indvars.iv.next, %2 ] - %3 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv, i64 %indvars.iv41 - store i32 0, ptr %3, align 4, !tbaa !39 + %gep = getelementptr inbounds nuw [32 x i32], ptr %invariant.gep, i64 %indvars.iv + store i32 0, ptr %gep, align 4, !tbaa !39 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 - br i1 %exitcond.not, label %4, label %2, !llvm.loop !54 + br i1 %exitcond.not, label %3, label %2, !llvm.loop !54 -4: ; preds = %2 +3: ; preds = %2 %indvars.iv.next42 = add nuw nsw i64 %indvars.iv41, 1 %exitcond44.not = icmp eq i64 %indvars.iv.next42, 32 br i1 %exitcond44.not, label %.preheader31, label %.preheader33, !llvm.loop !55 -.preheader31: ; preds = %4, %18 - %indvars.iv49 = phi i64 [ %indvars.iv.next50, %18 ], [ 0, %4 ] - %5 = trunc nuw nsw i64 %indvars.iv49 to i32 - %6 = shl nuw i32 1, %5 - br label %7 +.preheader31: ; preds = %3, %17 + %indvars.iv49 = phi i64 [ %indvars.iv.next50, %17 ], [ 0, %3 ] + %4 = trunc nuw nsw i64 %indvars.iv49 to i32 + %5 = shl nuw i32 1, %4 + br label %6 -7: ; preds = %.preheader31, %17 - %indvars.iv45 = phi i64 [ 0, %.preheader31 ], [ %indvars.iv.next46, %17 ] - %8 = trunc nuw nsw i64 %indvars.iv45 to i32 - %9 = shl nuw nsw i32 1, %8 - %10 = and i32 %9, %5 - %.not = icmp eq i32 %10, 0 - br i1 %.not, label %17, label %11 - -11: ; preds = %7 - %12 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv45 - %13 = load i32, ptr %12, align 4, !tbaa !39 - %14 = or i32 %13, %6 - store i32 %14, ptr %12, align 4, !tbaa !39 - %15 = getelementptr inbounds nuw i8, ptr %12, i64 640 - %16 = getelementptr inbounds nuw [32 x i32], ptr %15, i64 0, i64 %indvars.iv49 - store i32 -1, ptr %16, align 4, !tbaa !39 - br label %17 - -17: ; preds = %7, %11 +6: ; preds = %.preheader31, %16 + %indvars.iv45 = phi i64 [ 0, %.preheader31 ], [ %indvars.iv.next46, %16 ] + %7 = trunc nuw nsw i64 %indvars.iv45 to i32 + %8 = shl nuw nsw i32 1, %7 + %9 = and i32 %8, %4 + %.not = icmp eq i32 %9, 0 + br i1 %.not, label %16, label %10 + +10: ; preds = %6 + %11 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv45 + %12 = load i32, ptr %11, align 4, !tbaa !39 + %13 = or i32 %12, %5 + store i32 %13, ptr %11, align 4, !tbaa !39 + %14 = getelementptr inbounds nuw i8, ptr %11, i64 640 + %15 = getelementptr inbounds nuw [32 x i32], ptr %14, i64 0, i64 %indvars.iv49 + store i32 -1, ptr %15, align 4, !tbaa !39 + br label %16 + +16: ; preds = %6, %10 %indvars.iv.next46 = add nuw nsw i64 %indvars.iv45, 1 %exitcond48.not = icmp eq i64 %indvars.iv.next46, 5 - br i1 %exitcond48.not, label %18, label %7, !llvm.loop !56 + br i1 %exitcond48.not, label %17, label %6, !llvm.loop !56 -18: ; preds = %17 +17: ; preds = %16 %indvars.iv.next50 = add nuw nsw i64 %indvars.iv49, 1 %exitcond52.not = icmp eq i64 %indvars.iv.next50, 32 br i1 %exitcond52.not, label %.preheader, label %.preheader31, !llvm.loop !57 -.preheader: ; preds = %18, %23 - %indvars.iv57 = phi i64 [ %indvars.iv.next58, %23 ], [ 0, %18 ] - br label %19 +.preheader: ; preds = %17, %22 + %indvars.iv57 = phi i64 [ %indvars.iv.next58, %22 ], [ 0, %17 ] + br label %18 -19: ; preds = %.preheader, %19 - %indvars.iv53 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next54, %19 ] - %20 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv53 - %21 = load i32, ptr %20, align 4, !tbaa !39 - %22 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv53, i64 %indvars.iv57 - store i32 %21, ptr %22, align 4, !tbaa !39 +18: ; preds = %.preheader, %18 + %indvars.iv53 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next54, %18 ] + %19 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv53 + %20 = load i32, ptr %19, align 4, !tbaa !39 + %21 = getelementptr inbounds nuw [32 x i32], ptr %19, i64 0, i64 %indvars.iv57 + store i32 %20, ptr %21, align 4, !tbaa !39 %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1 %exitcond56.not = icmp eq i64 %indvars.iv.next54, 5 - br i1 %exitcond56.not, label %23, label %19, !llvm.loop !58 + br i1 %exitcond56.not, label %22, label %18, !llvm.loop !58 -23: ; preds = %19 +22: ; preds = %18 %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 32 - br i1 %exitcond60.not, label %24, label %.preheader, !llvm.loop !59 + br i1 %exitcond60.not, label %23, label %.preheader, !llvm.loop !59 -24: ; preds = %23 +23: ; preds = %22 ret void } diff --git a/bench/abc/optimized/mpmLib.ll b/bench/abc/optimized/mpmLib.ll index df5b993ab3a..9d73295e3ec 100644 --- a/bench/abc/optimized/mpmLib.ll +++ b/bench/abc/optimized/mpmLib.ll @@ -18,26 +18,27 @@ define noalias noundef ptr @Mpm_LibLutSetSimple(i32 noundef %0) local_unnamed_ad %wide.trip.count21 = zext i32 %6 to i64 br label %7 -7: ; preds = %.lr.ph, %11 - %indvars.iv18 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next19, %11 ] +7: ; preds = %.lr.ph, %12 + %indvars.iv18 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next19, %12 ] %8 = getelementptr inbounds nuw [13 x i32], ptr %4, i64 0, i64 %indvars.iv18 store i32 20, ptr %8, align 4, !tbaa !10 - br label %9 + %9 = getelementptr inbounds nuw [13 x [13 x i32]], ptr %5, i64 0, i64 %indvars.iv18 + br label %10 -9: ; preds = %7, %9 - %indvars.iv = phi i64 [ 0, %7 ], [ %indvars.iv.next, %9 ] - %10 = getelementptr inbounds nuw [13 x [13 x i32]], ptr %5, i64 0, i64 %indvars.iv18, i64 %indvars.iv - store i32 1, ptr %10, align 4, !tbaa !10 +10: ; preds = %7, %10 + %indvars.iv = phi i64 [ 0, %7 ], [ %indvars.iv.next, %10 ] + %11 = getelementptr inbounds nuw [13 x i32], ptr %9, i64 0, i64 %indvars.iv + store i32 1, ptr %11, align 4, !tbaa !10 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv18 - br i1 %exitcond.not, label %11, label %9, !llvm.loop !11 + br i1 %exitcond.not, label %12, label %10, !llvm.loop !11 -11: ; preds = %9 +12: ; preds = %10 %indvars.iv.next19 = add nuw nsw i64 %indvars.iv18, 1 %exitcond22.not = icmp eq i64 %indvars.iv.next19, %wide.trip.count21 br i1 %exitcond22.not, label %._crit_edge, label %7, !llvm.loop !13 -._crit_edge: ; preds = %11, %1 +._crit_edge: ; preds = %12, %1 ret ptr %2 } diff --git a/bench/abseil-cpp/optimized/crc.ll b/bench/abseil-cpp/optimized/crc.ll index dab6074e3b7..9057f7921da 100644 --- a/bench/abseil-cpp/optimized/crc.ll +++ b/bench/abseil-cpp/optimized/crc.ll @@ -54,7 +54,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %10 = icmp eq i32 %.04754.us, 128 %11 = shl nuw nsw i32 %.04754.us, 1 %12 = zext nneg i32 %11 to i64 - %13 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %12 + %13 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %12 %.046.in.us = select i1 %10, ptr %8, ptr %13 %.046.us = load i32, ptr %.046.in.us, align 4, !tbaa !4 %14 = and i32 %.046.us, 1 @@ -63,7 +63,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %16 = select i1 %.not53.us, i32 0, i32 %0 %.sink = xor i32 %15, %16 %17 = zext nneg i32 %.04754.us to i64 - %18 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %17 + %18 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %17 store i32 %.sink, ptr %18, align 4, !tbaa !4 %19 = lshr i32 %.04754.us, 1 %.not50.us = icmp samesign ult i32 %.04754.us, 2 @@ -81,7 +81,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( 22: ; preds = %.split %23 = shl nuw nsw i32 %.04754, 1 %24 = zext nneg i32 %23 to i64 - %25 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 0, i64 %24 + %25 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %24 %.046 = load i32, ptr %25, align 4, !tbaa !4 %26 = and i32 %.046, 1 %.not53 = icmp eq i32 %26, 0 @@ -91,13 +91,13 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( 28: ; preds = %22 %29 = xor i32 %27, %0 %30 = zext nneg i32 %.04754 to i64 - %31 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 0, i64 %30 + %31 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %30 store i32 %29, ptr %31, align 4, !tbaa !4 br label %35 32: ; preds = %22 %33 = zext nneg i32 %.04754 to i64 - %34 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 0, i64 %33 + %34 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %33 store i32 %27, ptr %34, align 4, !tbaa !4 br label %35 @@ -122,7 +122,7 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %.04556 = phi i32 [ %38, %.loopexit ], [ 2, %.preheader.preheader ] %38 = shl i32 %.04556, 1 %39 = sext i32 %.04556 to i64 - %40 = getelementptr inbounds [256 x i32], ptr %3, i64 %indvars.iv61, i64 %39 + %40 = getelementptr inbounds [256 x i32], ptr %6, i64 0, i64 %39 %41 = or disjoint i32 %.04556, 1 %42 = zext i32 %41 to i64 %43 = zext i32 %38 to i64 @@ -132,10 +132,10 @@ define dso_local void @_ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j( %indvars.iv = phi i64 [ %42, %.preheader ], [ %indvars.iv.next, %44 ] %45 = load i32, ptr %40, align 4, !tbaa !4 %46 = sub nuw nsw i64 %indvars.iv, %39 - %47 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %46 + %47 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %46 %48 = load i32, ptr %47, align 4, !tbaa !4 %49 = xor i32 %48, %45 - %50 = getelementptr inbounds nuw [256 x i32], ptr %3, i64 %indvars.iv61, i64 %indvars.iv + %50 = getelementptr inbounds nuw [256 x i32], ptr %6, i64 0, i64 %indvars.iv store i32 %49, ptr %50, align 4, !tbaa !4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %.not52 = icmp eq i64 %indvars.iv.next, %43 @@ -367,7 +367,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds %38 = icmp eq i32 %.04754.us.i42, 128 %39 = shl nuw nsw i32 %.04754.us.i42, 1 %40 = zext nneg i32 %39 to i64 - %41 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %40 + %41 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %40 %.046.in.us.i43 = select i1 %38, ptr %36, ptr %41 %.046.us.i44 = load i32, ptr %.046.in.us.i43, align 4, !tbaa !4 %42 = and i32 %.046.us.i44, 1 @@ -376,7 +376,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds %44 = select i1 %.not53.us.i45, i32 0, i32 -2097792136 %.sink.i46 = xor i32 %44, %43 %45 = zext nneg i32 %.04754.us.i42 to i64 - %46 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %45 + %46 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %45 store i32 %.sink.i46, ptr %46, align 4, !tbaa !4 %47 = lshr i32 %.04754.us.i42, 1 %.not50.us.i47 = icmp samesign ult i32 %.04754.us.i42, 2 @@ -394,7 +394,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds 50: ; preds = %.split.i57 %51 = shl nuw nsw i32 %.04754.i58, 1 %52 = zext nneg i32 %51 to i64 - %53 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 0, i64 %52 + %53 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %52 %.046.i59 = load i32, ptr %53, align 4, !tbaa !4 %54 = and i32 %.046.i59, 1 %.not53.i60 = icmp eq i32 %54, 0 @@ -404,13 +404,13 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit.preheader: ; preds 56: ; preds = %50 %57 = xor i32 %55, -2097792136 %58 = zext nneg i32 %.04754.i58 to i64 - %59 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 0, i64 %58 + %59 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %58 store i32 %57, ptr %59, align 4, !tbaa !4 br label %63 60: ; preds = %50 %61 = zext nneg i32 %.04754.i58 to i64 - %62 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 0, i64 %61 + %62 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %61 store i32 %55, ptr %62, align 4, !tbaa !4 br label %63 @@ -440,7 +440,7 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit62.preheader: ; pre %.04556.i49 = phi i32 [ %66, %.loopexit.i53 ], [ 2, %.preheader.i48.preheader ] %66 = shl i32 %.04556.i49, 1 %67 = sext i32 %.04556.i49 to i64 - %68 = getelementptr inbounds [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %67 + %68 = getelementptr inbounds [256 x i32], ptr %34, i64 0, i64 %67 %69 = or disjoint i32 %.04556.i49, 1 %70 = zext i32 %69 to i64 %71 = zext i32 %66 to i64 @@ -450,10 +450,10 @@ _ZN4absl12crc_internal7CRCImpl13FillWordTableEjjiPA256_j.exit62.preheader: ; pre %indvars.iv.i50 = phi i64 [ %70, %.preheader.i48 ], [ %indvars.iv.next.i51, %72 ] %73 = load i32, ptr %68, align 4, !tbaa !4 %74 = sub nuw nsw i64 %indvars.iv.i50, %67 - %75 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %74 + %75 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %74 %76 = load i32, ptr %75, align 4, !tbaa !4 %77 = xor i32 %76, %73 - %78 = getelementptr inbounds nuw [256 x i32], ptr %1, i64 %indvars.iv61.i40, i64 %indvars.iv.i50 + %78 = getelementptr inbounds nuw [256 x i32], ptr %34, i64 0, i64 %indvars.iv.i50 store i32 %77, ptr %78, align 4, !tbaa !4 %indvars.iv.next.i51 = add nuw nsw i64 %indvars.iv.i50, 1 %.not52.i52 = icmp eq i64 %indvars.iv.next.i51, %71 diff --git a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll index d0c041e8970..d8b349c2932 100644 --- a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll +++ b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll @@ -8963,19 +8963,17 @@ define hidden i64 @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$Al %. = zext i1 %not. to i64 %.0 = select i1 %2, i64 2, i64 %. %3 = getelementptr inbounds nuw i8, ptr %0, i64 528 - %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0, i64 0 + %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0 %5 = tail call { i16, i16 } @_ZN6brotli3enc19context_map_entropy18min_cost_speed_max17h9f7f213e0b3289f6E(ptr noalias noundef nonnull readonly align 4 %4, i64 noundef 16) %6 = extractvalue { i16, i16 } %5, 0 %7 = extractvalue { i16, i16 } %5, 1 - %.idx = shl nuw nsw i64 %.0, 7 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx - %9 = getelementptr inbounds nuw i8, ptr %8, i64 64 - %10 = tail call { i16, i16 } @_ZN6brotli3enc19context_map_entropy18min_cost_speed_max17h9f7f213e0b3289f6E(ptr noalias noundef nonnull readonly align 4 %9, i64 noundef 16) - %11 = extractvalue { i16, i16 } %10, 0 - %12 = extractvalue { i16, i16 } %10, 1 - %.sroa.7.0.insert.ext = zext i16 %12 to i64 + %8 = getelementptr inbounds nuw i8, ptr %4, i64 64 + %9 = tail call { i16, i16 } @_ZN6brotli3enc19context_map_entropy18min_cost_speed_max17h9f7f213e0b3289f6E(ptr noalias noundef nonnull readonly align 4 %8, i64 noundef 16) + %10 = extractvalue { i16, i16 } %9, 0 + %11 = extractvalue { i16, i16 } %9, 1 + %.sroa.7.0.insert.ext = zext i16 %11 to i64 %.sroa.7.0.insert.shift = shl nuw i64 %.sroa.7.0.insert.ext, 48 - %.sroa.5.0.insert.ext = zext i16 %11 to i64 + %.sroa.5.0.insert.ext = zext i16 %10 to i64 %.sroa.5.0.insert.shift = shl nuw nsw i64 %.sroa.5.0.insert.ext, 32 %.sroa.5.0.insert.insert = or disjoint i64 %.sroa.7.0.insert.shift, %.sroa.5.0.insert.shift %.sroa.3.0.insert.ext = zext i16 %7 to i64 @@ -9056,17 +9054,15 @@ define hidden i64 @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$Al %. = zext i1 %not. to i64 %.0 = select i1 %2, i64 2, i64 %. %3 = getelementptr inbounds nuw i8, ptr %0, i64 528 - %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0, i64 0 + %4 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %3, i64 0, i64 %.0 %5 = tail call noundef float @_ZN6brotli3enc19context_map_entropy14min_cost_value17h2648fee81f427a00E(ptr noalias noundef nonnull readonly align 4 %4, i64 noundef 16) - %.idx = shl nuw nsw i64 %.0, 7 - %6 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx - %7 = getelementptr inbounds nuw i8, ptr %6, i64 64 - %8 = tail call noundef float @_ZN6brotli3enc19context_map_entropy14min_cost_value17h2648fee81f427a00E(ptr noalias noundef nonnull readonly align 4 %7, i64 noundef 16) - %9 = bitcast float %5 to i32 - %10 = bitcast float %8 to i32 - %.sroa.3.0.insert.ext = zext i32 %10 to i64 + %6 = getelementptr inbounds nuw i8, ptr %4, i64 64 + %7 = tail call noundef float @_ZN6brotli3enc19context_map_entropy14min_cost_value17h2648fee81f427a00E(ptr noalias noundef nonnull readonly align 4 %6, i64 noundef 16) + %8 = bitcast float %5 to i32 + %9 = bitcast float %7 to i32 + %.sroa.3.0.insert.ext = zext i32 %9 to i64 %.sroa.3.0.insert.shift = shl nuw i64 %.sroa.3.0.insert.ext, 32 - %.sroa.0.0.insert.ext = zext i32 %9 to i64 + %.sroa.0.0.insert.ext = zext i32 %8 to i64 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.shift, %.sroa.0.0.insert.ext ret i64 %.sroa.0.0.insert.insert } @@ -9095,13 +9091,14 @@ define hidden void @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$A store i64 0, ptr %.sroa.5, align 8 br label %13 -.loopexit: ; preds = %36 +.loopexit: ; preds = %35 %12 = add nuw nsw i64 %.sroa.0.037, 1 %exitcond.not = icmp eq i64 %12, 16 br i1 %exitcond.not, label %14, label %13 13: ; preds = %4, %.loopexit %.sroa.0.037 = phi i64 [ 1, %4 ], [ %12, %.loopexit ] + %invariant.gep = getelementptr inbounds nuw [16 x float], ptr %8, i64 0, i64 %.sroa.0.037 br label %30 14: ; preds = %.loopexit @@ -9150,24 +9147,24 @@ define hidden void @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$A call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.5) ret void -30: ; preds = %13, %36 - %31 = phi i1 [ true, %13 ], [ false, %36 ] - %.sroa.04.036.sroa.phi = phi ptr [ %.sroa.0, %13 ], [ %.sroa.5, %36 ] - %.sroa.04.036.sroa.phi39 = phi ptr [ %.sroa.042, %13 ], [ %.sroa.3, %36 ] - %.sroa.04.036 = phi i64 [ 0, %13 ], [ 1, %36 ] - %32 = getelementptr inbounds nuw [3 x [2 x [16 x float]]], ptr %7, i64 0, i64 %.0, i64 %.sroa.04.036, i64 %.sroa.0.037 - %33 = load float, ptr %32, align 4, !noundef !13 - %34 = load float, ptr %.sroa.04.036.sroa.phi39, align 4, !noundef !13 - %35 = fcmp olt float %33, %34 - br i1 %35, label %37, label %36 - -36: ; preds = %30, %37 +30: ; preds = %13, %35 + %31 = phi i1 [ true, %13 ], [ false, %35 ] + %.sroa.04.036.sroa.phi = phi ptr [ %.sroa.0, %13 ], [ %.sroa.5, %35 ] + %.sroa.04.036.sroa.phi39 = phi ptr [ %.sroa.042, %13 ], [ %.sroa.3, %35 ] + %.sroa.04.036 = phi i64 [ 0, %13 ], [ 1, %35 ] + %gep = getelementptr inbounds nuw [2 x [16 x float]], ptr %invariant.gep, i64 0, i64 %.sroa.04.036 + %32 = load float, ptr %gep, align 4, !noundef !13 + %33 = load float, ptr %.sroa.04.036.sroa.phi39, align 4, !noundef !13 + %34 = fcmp olt float %32, %33 + br i1 %34, label %36, label %35 + +35: ; preds = %30, %36 br i1 %31, label %30, label %.loopexit -37: ; preds = %30 +36: ; preds = %30 store i64 %.sroa.0.037, ptr %.sroa.04.036.sroa.phi, align 8 - store float %33, ptr %.sroa.04.036.sroa.phi39, align 4 - br label %36 + store float %32, ptr %.sroa.04.036.sroa.phi39, align 4 + br label %35 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/arrow/optimized/time.ll b/bench/arrow/optimized/time.ll index 2b97d7ee6ca..90267c99601 100644 --- a/bench/arrow/optimized/time.ll +++ b/bench/arrow/optimized/time.ll @@ -13,10 +13,11 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define { i32, i64 } @_ZN5arrow4util22GetTimestampConversionENS_8TimeUnit4typeES2_(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = sext i32 %0 to i64 - %4 = sext i32 %1 to i64 - %5 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %3, i64 %4 - %.sroa.0.0.copyload = load i32, ptr %5, align 16 - %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 + %4 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %3 + %5 = sext i32 %1 to i64 + %6 = getelementptr inbounds [4 x %"struct.std::pair"], ptr %4, i64 0, i64 %5 + %.sroa.0.0.copyload = load i32, ptr %6, align 16 + %.sroa.22.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 %.sroa.22.0.copyload = load i64, ptr %.sroa.22.0..sroa_idx, align 8 %.fca.0.insert = insertvalue { i32, i64 } poison, i32 %.sroa.0.0.copyload, 0 %.fca.1.insert = insertvalue { i32, i64 } %.fca.0.insert, i64 %.sroa.22.0.copyload, 1 @@ -32,35 +33,36 @@ define void @_ZN5arrow4util21ConvertTimestampValueERKSt10shared_ptrINS_8DataType %9 = getelementptr inbounds nuw i8, ptr %8, i64 72 %10 = load i32, ptr %9, align 8, !tbaa !11 %11 = sext i32 %7 to i64 - %12 = sext i32 %10 to i64 - %13 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %11, i64 %12 - %.sroa.0.0.copyload.i = load i32, ptr %13, align 16 - %.sroa.22.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %13, i64 8 + %12 = getelementptr inbounds [4 x [4 x %"struct.std::pair"]], ptr @_ZN5arrow4utilL25kTimestampConversionTableE, i64 0, i64 %11 + %13 = sext i32 %10 to i64 + %14 = getelementptr inbounds [4 x %"struct.std::pair"], ptr %12, i64 0, i64 %13 + %.sroa.0.0.copyload.i = load i32, ptr %14, align 16 + %.sroa.22.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %14, i64 8 %.sroa.22.0.copyload.i = load i64, ptr %.sroa.22.0..sroa_idx.i, align 8 - switch i32 %.sroa.0.0.copyload.i, label %20 [ - i32 0, label %14 - i32 1, label %17 + switch i32 %.sroa.0.0.copyload.i, label %21 [ + i32 0, label %15 + i32 1, label %18 ] -14: ; preds = %4 - %15 = mul nsw i64 %.sroa.22.0.copyload.i, %3 +15: ; preds = %4 + %16 = mul nsw i64 %.sroa.22.0.copyload.i, %3 store ptr null, ptr %0, align 8, !tbaa !35 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %15, ptr %16, align 8, !tbaa !38 - br label %21 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %16, ptr %17, align 8, !tbaa !38 + br label %22 -17: ; preds = %4 - %18 = sdiv i64 %3, %.sroa.22.0.copyload.i +18: ; preds = %4 + %19 = sdiv i64 %3, %.sroa.22.0.copyload.i store ptr null, ptr %0, align 8, !tbaa !35 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %18, ptr %19, align 8, !tbaa !38 - br label %21 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %19, ptr %20, align 8, !tbaa !38 + br label %22 -20: ; preds = %4 +21: ; preds = %4 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) - br label %21 + br label %22 -21: ; preds = %20, %17, %14 +22: ; preds = %21, %18, %15 ret void } diff --git a/bench/assimp/optimized/ASEParser.ll b/bench/assimp/optimized/ASEParser.ll index 5a4f8a2416b..33c8735808d 100644 --- a/bench/assimp/optimized/ASEParser.ll +++ b/bench/assimp/optimized/ASEParser.ll @@ -11200,14 +11200,14 @@ define hidden void @_ZN6Assimp3ASE6Parser26ParseLV3MeshTFaceListBlockEjRNS0_4Mes br label %.outer .outer: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit, %4 - %17 = phi ptr [ %115, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.pre, %4 ] + %17 = phi ptr [ %116, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.pre, %4 ] %.0.ph = phi i32 [ %.11821, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ 0, %4 ] %18 = load i8, ptr %17, align 1 %19 = icmp eq i8 %18, 42 br i1 %19, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread -.lr.ph: ; preds = %.outer, %79 - %20 = phi ptr [ %80, %79 ], [ %17, %.outer ] +.lr.ph: ; preds = %.outer, %80 + %20 = phi ptr [ %81, %80 ], [ %17, %.outer ] %21 = getelementptr inbounds nuw i8, ptr %20, i64 1 store ptr %21, ptr %0, align 8 %22 = call i32 @strncmp(ptr noundef nonnull dereferenceable(11) @.str.181, ptr noundef nonnull dereferenceable(1) %21, i64 noundef 10) #32 @@ -11342,132 +11342,133 @@ _ZN6Assimp3ASE6Parser22ParseLV4MeshLongTripleEPjRj.exit: ; preds = %_ZN6Assimp3A %67 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv() call void @_ZN6Assimp6Logger4warnIJRA2048_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %67, ptr noundef nonnull align 1 dereferenceable(2048) %6) call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %6) #29 - br label %79 + br label %80 68: ; preds = %56 %69 = load i32, ptr %7, align 4 - %70 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %59, i64 %57, i32 1, i64 %13 - store i32 %69, ptr %70, align 4 - %71 = load i32, ptr %14, align 4 - %72 = load ptr, ptr %11, align 8 - %73 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %72, i64 %57, i32 1, i64 0, i64 1 - %74 = getelementptr i8, ptr %73, i64 %.idx - store i32 %71, ptr %74, align 4 - %75 = load i32, ptr %15, align 4 - %76 = load ptr, ptr %11, align 8 - %77 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %76, i64 %57, i32 1, i64 0, i64 2 - %78 = getelementptr i8, ptr %77, i64 %.idx - store i32 %75, ptr %78, align 4 - br label %79 - -79: ; preds = %68, %64 + %70 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %59, i64 %57, i32 1 + %71 = getelementptr inbounds nuw [8 x [3 x i32]], ptr %70, i64 0, i64 %13 + store i32 %69, ptr %71, align 4 + %72 = load i32, ptr %14, align 4 + %73 = load ptr, ptr %11, align 8 + %74 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %73, i64 %57, i32 1, i64 0, i64 1 + %75 = getelementptr i8, ptr %74, i64 %.idx + store i32 %72, ptr %75, align 4 + %76 = load i32, ptr %15, align 4 + %77 = load ptr, ptr %11, align 8 + %78 = getelementptr inbounds nuw %"struct.Assimp::ASE::Face", ptr %77, i64 %57, i32 1, i64 0, i64 2 + %79 = getelementptr i8, ptr %78, i64 %.idx + store i32 %76, ptr %79, align 4 + br label %80 + +80: ; preds = %68, %64 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #29 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #29 - %80 = load ptr, ptr %0, align 8 - %81 = load i8, ptr %80, align 1 - %82 = icmp eq i8 %81, 42 - br i1 %82, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit + %81 = load ptr, ptr %0, align 8 + %82 = load i8, ptr %81, align 1 + %83 = icmp eq i8 %82, 42 + br i1 %83, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit -_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit: ; preds = %23, %.lr.ph, %79 - %83 = phi ptr [ %21, %23 ], [ %21, %.lr.ph ], [ %80, %79 ] - %.pre32 = load i8, ptr %83, align 1 +_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit: ; preds = %23, %.lr.ph, %80 + %84 = phi ptr [ %21, %23 ], [ %21, %.lr.ph ], [ %81, %80 ] + %.pre32 = load i8, ptr %84, align 1 br label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit, %.outer - %84 = phi i8 [ %.pre32, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %18, %.outer ] - %85 = phi ptr [ %83, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %17, %.outer ] - switch i8 %84, label %_ZN6Assimp9IsLineEndIcEEbT_.exit [ - i8 123, label %86 - i8 125, label %88 - i8 0, label %108 - i8 13, label %109 - i8 10, label %109 - i8 12, label %109 + %85 = phi i8 [ %.pre32, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %18, %.outer ] + %86 = phi ptr [ %84, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %17, %.outer ] + switch i8 %85, label %_ZN6Assimp9IsLineEndIcEEbT_.exit [ + i8 123, label %87 + i8 125, label %89 + i8 0, label %109 + i8 13, label %110 + i8 10, label %110 + i8 12, label %110 ] -86: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread - %87 = add nsw i32 %.0.ph, 1 +87: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread + %88 = add nsw i32 %.0.ph, 1 br label %_ZN6Assimp9IsLineEndIcEEbT_.exit -88: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread - %89 = add nsw i32 %.0.ph, -1 - %90 = icmp eq i32 %89, 0 - br i1 %90, label %91, label %_ZN6Assimp9IsLineEndIcEEbT_.exit +89: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread + %90 = add nsw i32 %.0.ph, -1 + %91 = icmp eq i32 %90, 0 + br i1 %91, label %92, label %_ZN6Assimp9IsLineEndIcEEbT_.exit -91: ; preds = %88 - %92 = getelementptr inbounds nuw i8, ptr %85, i64 1 - store ptr %92, ptr %0, align 8 - %93 = load ptr, ptr %9, align 8 - %94 = icmp eq ptr %92, %93 - br i1 %94, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %.lr.ph.i +92: ; preds = %89 + %93 = getelementptr inbounds nuw i8, ptr %86, i64 1 + store ptr %93, ptr %0, align 8 + %94 = load ptr, ptr %9, align 8 + %95 = icmp eq ptr %93, %94 + br i1 %95, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %91 +.lr.ph.i: ; preds = %92 %.promoted24.i = load i8, ptr %16, align 4 %.promoted25.i = load i32, ptr %10, align 8 - br label %95 - -95: ; preds = %105, %.lr.ph.i - %96 = phi i32 [ %.promoted25.i, %.lr.ph.i ], [ %104, %105 ] - %97 = phi i8 [ %.promoted24.i, %.lr.ph.i ], [ %storemerge.i15, %105 ] - %98 = phi ptr [ %92, %.lr.ph.i ], [ %106, %105 ] - %99 = load i8, ptr %98, align 1 - switch i8 %99, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i [ - i8 13, label %100 - i8 10, label %100 - i8 0, label %100 - i8 12, label %100 + br label %96 + +96: ; preds = %106, %.lr.ph.i + %97 = phi i32 [ %.promoted25.i, %.lr.ph.i ], [ %105, %106 ] + %98 = phi i8 [ %.promoted24.i, %.lr.ph.i ], [ %storemerge.i15, %106 ] + %99 = phi ptr [ %93, %.lr.ph.i ], [ %107, %106 ] + %100 = load i8, ptr %99, align 1 + switch i8 %100, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i [ + i8 13, label %101 + i8 10, label %101 + i8 0, label %101 + i8 12, label %101 ] -100: ; preds = %95, %95, %95, %95 - %101 = trunc nuw i8 %97 to i1 - br i1 %101, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, label %102 +101: ; preds = %96, %96, %96, %96 + %102 = trunc nuw i8 %98 to i1 + br i1 %102, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, label %103 -102: ; preds = %100 - %103 = add i32 %96, 1 - store i32 %103, ptr %10, align 8 +103: ; preds = %101 + %104 = add i32 %97, 1 + store i32 %104, ptr %10, align 8 br label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i -_ZN6Assimp9IsLineEndIcEEbT_.exit.i: ; preds = %102, %100, %95 - %storemerge.i15 = phi i8 [ 1, %102 ], [ 0, %95 ], [ 0, %100 ] - %104 = phi i32 [ %103, %102 ], [ %96, %95 ], [ %96, %100 ] +_ZN6Assimp9IsLineEndIcEEbT_.exit.i: ; preds = %103, %101, %96 + %storemerge.i15 = phi i8 [ 1, %103 ], [ 0, %96 ], [ 0, %101 ] + %105 = phi i32 [ %104, %103 ], [ %97, %96 ], [ %97, %101 ] store i8 %storemerge.i15, ptr %16, align 4 - switch i8 %99, label %105 [ + switch i8 %100, label %106 [ i8 125, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 123, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 42, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 0, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit ] -105: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i - %106 = getelementptr inbounds nuw i8, ptr %98, i64 1 - store ptr %106, ptr %0, align 8 - %107 = icmp eq ptr %106, %93 - br i1 %107, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %95 +106: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i + %107 = getelementptr inbounds nuw i8, ptr %99, i64 1 + store ptr %107, ptr %0, align 8 + %108 = icmp eq ptr %107, %94 + br i1 %108, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %96 -_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %105, %91 +_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %106, %92 ret void -108: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread +109: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread call void @_ZN6Assimp3ASE6Parser8LogErrorEPKc(ptr noundef nonnull align 8 dereferenceable(188) %0, ptr noundef nonnull @.str.183) #31 unreachable -109: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread - %110 = load i8, ptr %16, align 4, !range !32, !noundef !33 - %111 = trunc nuw i8 %110 to i1 - br i1 %111, label %_ZN6Assimp9IsLineEndIcEEbT_.exit, label %112 +110: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread + %111 = load i8, ptr %16, align 4, !range !32, !noundef !33 + %112 = trunc nuw i8 %111 to i1 + br i1 %112, label %_ZN6Assimp9IsLineEndIcEEbT_.exit, label %113 -112: ; preds = %109 - %113 = load i32, ptr %10, align 8 - %114 = add i32 %113, 1 - store i32 %114, ptr %10, align 8 +113: ; preds = %110 + %114 = load i32, ptr %10, align 8 + %115 = add i32 %114, 1 + store i32 %115, ptr %10, align 8 br label %_ZN6Assimp9IsLineEndIcEEbT_.exit -_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %109, %88, %86, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %112 - %storemerge = phi i8 [ 1, %112 ], [ 0, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ 0, %86 ], [ 0, %88 ], [ 0, %109 ] - %.11821 = phi i32 [ %.0.ph, %112 ], [ %.0.ph, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ %87, %86 ], [ %89, %88 ], [ %.0.ph, %109 ] +_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %110, %89, %87, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %113 + %storemerge = phi i8 [ 1, %113 ], [ 0, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ 0, %87 ], [ 0, %89 ], [ 0, %110 ] + %.11821 = phi i32 [ %.0.ph, %113 ], [ %.0.ph, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ %88, %87 ], [ %90, %89 ], [ %.0.ph, %110 ] store i8 %storemerge, ptr %16, align 4 - %115 = getelementptr inbounds nuw i8, ptr %85, i64 1 - store ptr %115, ptr %0, align 8 + %116 = getelementptr inbounds nuw i8, ptr %86, i64 1 + store ptr %116, ptr %0, align 8 br label %.outer, !llvm.loop !99 } diff --git a/bench/boost/optimized/formatters_cache.ll b/bench/boost/optimized/formatters_cache.ll index 208734633b2..5d63168a551 100644 --- a/bench/boost/optimized/formatters_cache.ll +++ b/bench/boost/optimized/formatters_cache.ll @@ -137,7 +137,7 @@ define hidden void @_ZN5boost6locale8impl_icu16formatters_cacheC2ERKN6icu_706Loc 24: ; preds = %15 %25 = landingpad { ptr, i32 } cleanup - br label %169 + br label %170 .preheader146: ; preds = %15, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit ], [ 0, %15 ] @@ -311,237 +311,238 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatER cleanup br label %.body -.preheader143: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118, %109 - %indvars.iv167 = phi i64 [ %indvars.iv.next168, %109 ], [ 0, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118 ] +.preheader143: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118, %110 + %indvars.iv167 = phi i64 [ %indvars.iv.next168, %110 ], [ 0, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118 ] %100 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv167 %101 = load i32, ptr %100, align 4, !tbaa !16 - br label %110 + %102 = getelementptr inbounds nuw [4 x [4 x %"class.icu_70::UnicodeString"]], ptr %.ptr69, i64 0, i64 %indvars.iv167 + br label %111 -102: ; preds = %109 +103: ; preds = %110 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #18 - %103 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %104 = load i16, ptr %103, align 8, !tbaa !13, !noalias !21 - %105 = icmp ugt i16 %104, 31 - br i1 %105, label %107, label %106 + %104 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %105 = load i16, ptr %104, align 8, !tbaa !13, !noalias !21 + %106 = icmp ugt i16 %105, 31 + br i1 %106, label %108, label %107 -106: ; preds = %102 +107: ; preds = %103 invoke void @_ZN6icu_7013UnicodeStringC1EPKc(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull @.str) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %163 + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %164 -107: ; preds = %102 - %108 = getelementptr inbounds nuw i8, ptr %0, i64 136 - invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull align 8 dereferenceable(64) %108) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %163 +108: ; preds = %103 + %109 = getelementptr inbounds nuw i8, ptr %0, i64 136 + invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull align 8 dereferenceable(64) %109) + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %164 -109: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 +110: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 %indvars.iv.next168 = add nuw nsw i64 %indvars.iv167, 1 %exitcond170.not = icmp eq i64 %indvars.iv.next168, 4 - br i1 %exitcond170.not, label %102, label %.preheader143, !llvm.loop !24 + br i1 %exitcond170.not, label %103, label %.preheader143, !llvm.loop !24 -110: ; preds = %.preheader143, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 +111: ; preds = %.preheader143, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 %indvars.iv163 = phi i64 [ 0, %.preheader143 ], [ %indvars.iv.next164, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 ] - %111 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv163 - %112 = load i32, ptr %111, align 4, !tbaa !16 - %113 = invoke noundef ptr @_ZN6icu_7010DateFormat22createDateTimeInstanceENS0_6EStyleES1_RKNS_6LocaleE(i32 noundef %101, i32 noundef %112, ptr noundef nonnull align 8 dereferenceable(217) %1) - to label %114 unwind label %146 - -114: ; preds = %110 - %115 = getelementptr inbounds nuw [4 x [4 x %"class.icu_70::UnicodeString"]], ptr %.ptr69, i64 0, i64 %indvars.iv167, i64 %indvars.iv163 - %116 = icmp eq ptr %113, null - br i1 %116, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129, label %121 - -_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129: ; preds = %114 - %117 = getelementptr inbounds nuw i8, ptr %115, i64 8 - %118 = load i16, ptr %117, align 8, !tbaa !13 - %119 = and i16 %118, 1 - %.not.i.i10.i130 = icmp eq i16 %119, 0 - %120 = and i16 %118, 30 - %storemerge.i.i11.i131 = select i1 %.not.i.i10.i130, i16 %120, i16 2 - store i16 %storemerge.i.i11.i131, ptr %117, align 8, !tbaa !13 + %112 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv163 + %113 = load i32, ptr %112, align 4, !tbaa !16 + %114 = invoke noundef ptr @_ZN6icu_7010DateFormat22createDateTimeInstanceENS0_6EStyleES1_RKNS_6LocaleE(i32 noundef %101, i32 noundef %113, ptr noundef nonnull align 8 dereferenceable(217) %1) + to label %115 unwind label %147 + +115: ; preds = %111 + %116 = getelementptr inbounds nuw [4 x %"class.icu_70::UnicodeString"], ptr %102, i64 0, i64 %indvars.iv163 + %117 = icmp eq ptr %114, null + br i1 %117, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129, label %122 + +_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129: ; preds = %115 + %118 = getelementptr inbounds nuw i8, ptr %116, i64 8 + %119 = load i16, ptr %118, align 8, !tbaa !13 + %120 = and i16 %119, 1 + %.not.i.i10.i130 = icmp eq i16 %120, 0 + %121 = and i16 %119, 30 + %storemerge.i.i11.i131 = select i1 %.not.i.i10.i130, i16 %121, i16 2 + store i16 %storemerge.i.i11.i131, ptr %118, align 8, !tbaa !13 br label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 -121: ; preds = %114 - %122 = tail call ptr @__dynamic_cast(ptr nonnull %113, ptr nonnull @_ZTIN6icu_7010DateFormatE, ptr nonnull @_ZTIN6icu_7016SimpleDateFormatE, i64 0) #18 - %123 = icmp eq ptr %122, null - br i1 %123, label %124, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120 +122: ; preds = %115 + %123 = tail call ptr @__dynamic_cast(ptr nonnull %114, ptr nonnull @_ZTIN6icu_7010DateFormatE, ptr nonnull @_ZTIN6icu_7016SimpleDateFormatE, i64 0) #18 + %124 = icmp eq ptr %123, null + br i1 %124, label %125, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120 -124: ; preds = %121 - %125 = load ptr, ptr %113, align 8, !tbaa !8 - %126 = getelementptr inbounds nuw i8, ptr %125, i64 16 - %127 = load ptr, ptr %126, align 8 - %128 = invoke noundef ptr %127(ptr noundef nonnull align 8 dereferenceable(8) %113) +125: ; preds = %122 + %126 = load ptr, ptr %114, align 8, !tbaa !8 + %127 = getelementptr inbounds nuw i8, ptr %126, i64 16 + %128 = load ptr, ptr %127, align 8 + %129 = invoke noundef ptr %128(ptr noundef nonnull align 8 dereferenceable(8) %114) to label %.noexc.i124 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 -.noexc.i124: ; preds = %124 - %129 = invoke noundef ptr @_ZN6icu_7016SimpleDateFormat16getStaticClassIDEv() +.noexc.i124: ; preds = %125 + %130 = invoke noundef ptr @_ZN6icu_7016SimpleDateFormat16getStaticClassIDEv() to label %.noexc3.i125 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 .noexc3.i125: ; preds = %.noexc.i124 - %130 = icmp eq ptr %128, %129 - br i1 %130, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126 - -_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120: ; preds = %.noexc3.i125, %121 - %.0.i.i.i121 = phi ptr [ %122, %121 ], [ %113, %.noexc3.i125 ] - %131 = load ptr, ptr %.0.i.i.i121, align 8, !tbaa !8 - %132 = getelementptr inbounds nuw i8, ptr %131, i64 240 - %133 = load ptr, ptr %132, align 8 - %134 = invoke noundef nonnull align 8 dereferenceable(64) ptr %133(ptr noundef nonnull align 8 dereferenceable(864) %.0.i.i.i121, ptr noundef nonnull align 8 dereferenceable(64) %115) + %131 = icmp eq ptr %129, %130 + br i1 %131, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126 + +_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120: ; preds = %.noexc3.i125, %122 + %.0.i.i.i121 = phi ptr [ %123, %122 ], [ %114, %.noexc3.i125 ] + %132 = load ptr, ptr %.0.i.i.i121, align 8, !tbaa !8 + %133 = getelementptr inbounds nuw i8, ptr %132, i64 240 + %134 = load ptr, ptr %133, align 8 + %135 = invoke noundef nonnull align 8 dereferenceable(64) ptr %134(ptr noundef nonnull align 8 dereferenceable(864) %.0.i.i.i121, ptr noundef nonnull align 8 dereferenceable(64) %116) to label %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126: ; preds = %.noexc3.i125 - %135 = getelementptr inbounds nuw i8, ptr %115, i64 8 - %136 = load i16, ptr %135, align 8, !tbaa !13 - %137 = and i16 %136, 1 - %.not.i.i.i127 = icmp eq i16 %137, 0 - %138 = and i16 %136, 30 - %storemerge.i.i.i128 = select i1 %.not.i.i.i127, i16 %138, i16 2 - store i16 %storemerge.i.i.i128, ptr %135, align 8, !tbaa !13 + %136 = getelementptr inbounds nuw i8, ptr %116, i64 8 + %137 = load i16, ptr %136, align 8, !tbaa !13 + %138 = and i16 %137, 1 + %.not.i.i.i127 = icmp eq i16 %138, 0 + %139 = and i16 %137, 30 + %storemerge.i.i.i128 = select i1 %.not.i.i.i127, i16 %139, i16 2 + store i16 %storemerge.i.i.i128, ptr %136, align 8, !tbaa !13 br label %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123 _ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126, %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120 - %139 = load ptr, ptr %113, align 8, !tbaa !8 - %140 = getelementptr inbounds nuw i8, ptr %139, i64 8 - %141 = load ptr, ptr %140, align 8 - tail call void %141(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 + %140 = load ptr, ptr %114, align 8, !tbaa !8 + %141 = getelementptr inbounds nuw i8, ptr %140, i64 8 + %142 = load ptr, ptr %141, align 8 + tail call void %142(ptr noundef nonnull align 8 dereferenceable(352) %114) #18 br label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 -_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122: ; preds = %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, %.noexc.i124, %124 - %142 = landingpad { ptr, i32 } +_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122: ; preds = %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, %.noexc.i124, %125 + %143 = landingpad { ptr, i32 } cleanup - %143 = load ptr, ptr %113, align 8, !tbaa !8 - %144 = getelementptr inbounds nuw i8, ptr %143, i64 8 - %145 = load ptr, ptr %144, align 8 - tail call void %145(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 + %144 = load ptr, ptr %114, align 8, !tbaa !8 + %145 = getelementptr inbounds nuw i8, ptr %144, i64 8 + %146 = load ptr, ptr %145, align 8 + tail call void %146(ptr noundef nonnull align 8 dereferenceable(352) %114) #18 br label %.body _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134: ; preds = %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129 %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1 %exitcond166.not = icmp eq i64 %indvars.iv.next164, 4 - br i1 %exitcond166.not, label %109, label %110, !llvm.loop !25 + br i1 %exitcond166.not, label %110, label %111, !llvm.loop !25 -146: ; preds = %110 - %147 = landingpad { ptr, i32 } +147: ; preds = %111 + %148 = landingpad { ptr, i32 } cleanup br label %.body -"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit": ; preds = %106, %107 - %148 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %16, ptr noundef nonnull align 8 dereferenceable(64) %3) #18 +"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit": ; preds = %107, %108 + %149 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %16, ptr noundef nonnull align 8 dereferenceable(64) %3) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %3) #18 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #18 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #18 - %149 = getelementptr inbounds nuw i8, ptr %0, i64 400 - %150 = load i16, ptr %149, align 8, !tbaa !13, !noalias !26 - %151 = icmp ugt i16 %150, 31 - br i1 %151, label %153, label %152 + %150 = getelementptr inbounds nuw i8, ptr %0, i64 400 + %151 = load i16, ptr %150, align 8, !tbaa !13, !noalias !26 + %152 = icmp ugt i16 %151, 31 + br i1 %152, label %154, label %153 -152: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" +153: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" invoke void @_ZN6icu_7013UnicodeStringC1EPKc(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull @.str.2) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %165 + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %166 -153: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" - %154 = getelementptr inbounds nuw i8, ptr %0, i64 392 - invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 8 dereferenceable(64) %154) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %165 +154: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" + %155 = getelementptr inbounds nuw i8, ptr %0, i64 392 + invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 8 dereferenceable(64) %155) + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %166 -"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137": ; preds = %152, %153 - %155 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull align 8 dereferenceable(64) %4) #18 +"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137": ; preds = %153, %154 + %156 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull align 8 dereferenceable(64) %4) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %4) #18 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #18 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #18 - %156 = getelementptr inbounds nuw i8, ptr %0, i64 1552 - %157 = load i16, ptr %156, align 8, !tbaa !13, !noalias !29 - %158 = icmp ugt i16 %157, 31 - br i1 %158, label %160, label %159 + %157 = getelementptr inbounds nuw i8, ptr %0, i64 1552 + %158 = load i16, ptr %157, align 8, !tbaa !13, !noalias !29 + %159 = icmp ugt i16 %158, 31 + br i1 %159, label %161, label %160 -159: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" +160: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" invoke void @_ZN6icu_7013UnicodeStringC1EPKc(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull @.str.3) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %167 + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %168 -160: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" - %161 = getelementptr inbounds nuw i8, ptr %0, i64 1544 - invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull align 8 dereferenceable(64) %161) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %167 +161: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" + %162 = getelementptr inbounds nuw i8, ptr %0, i64 1544 + invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull align 8 dereferenceable(64) %162) + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %168 -"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140": ; preds = %159, %160 - %162 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %20, ptr noundef nonnull align 8 dereferenceable(64) %5) #18 +"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140": ; preds = %160, %161 + %163 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %20, ptr noundef nonnull align 8 dereferenceable(64) %5) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #18 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #18 ret void -163: ; preds = %107, %106 - %164 = landingpad { ptr, i32 } +164: ; preds = %108, %107 + %165 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #18 br label %.body -165: ; preds = %153, %152 - %166 = landingpad { ptr, i32 } +166: ; preds = %154, %153 + %167 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #18 br label %.body -167: ; preds = %160, %159 - %168 = landingpad { ptr, i32 } +168: ; preds = %161, %160 + %169 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #18 br label %.body -.body: ; preds = %163, %165, %167, %146, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122, %98, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106, %61, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i - %.pn75 = phi { ptr, i32 } [ %62, %61 ], [ %57, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i ], [ %99, %98 ], [ %94, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106 ], [ %147, %146 ], [ %142, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 ], [ %168, %167 ], [ %166, %165 ], [ %164, %163 ] +.body: ; preds = %164, %166, %168, %147, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122, %98, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106, %61, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i + %.pn75 = phi { ptr, i32 } [ %62, %61 ], [ %57, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i ], [ %99, %98 ], [ %94, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106 ], [ %148, %147 ], [ %143, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 ], [ %169, %168 ], [ %167, %166 ], [ %165, %164 ] call void @_ZN6icu_706LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %23) #18 - br label %169 + br label %170 -169: ; preds = %.body, %24 +170: ; preds = %.body, %24 %.pn75.pn = phi { ptr, i32 } [ %.pn75, %.body ], [ %25, %24 ] call void @_ZN5boost19thread_specific_ptrIN6icu_7016SimpleDateFormatEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %16) #18 - br label %170 + br label %171 -170: ; preds = %170, %169 - %.idx81 = phi i64 [ 1608, %169 ], [ %.add82, %170 ] +171: ; preds = %171, %170 + %.idx81 = phi i64 [ 1608, %170 ], [ %.add82, %171 ] %.add82 = add nsw i64 %.idx81, -64 %.ptr84 = getelementptr inbounds i8, ptr %0, i64 %.add82 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr84) #18 - %171 = icmp eq i64 %.add82, 584 - br i1 %171, label %.preheader142, label %170 + %172 = icmp eq i64 %.add82, 584 + br i1 %172, label %.preheader142, label %171 -.preheader142: ; preds = %170, %.preheader142 - %.idx87 = phi i64 [ %.add88, %.preheader142 ], [ 584, %170 ] +.preheader142: ; preds = %171, %.preheader142 + %.idx87 = phi i64 [ %.add88, %.preheader142 ], [ 584, %171 ] %.add88 = add nsw i64 %.idx87, -64 %.ptr90 = getelementptr inbounds i8, ptr %0, i64 %.add88 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr90) #18 - %172 = icmp eq i64 %.add88, 328 - br i1 %172, label %.preheader141, label %.preheader142 + %173 = icmp eq i64 %.add88, 328 + br i1 %173, label %.preheader141, label %.preheader142 .preheader141: ; preds = %.preheader142, %.preheader141 %.idx93 = phi i64 [ %.add94, %.preheader141 ], [ 328, %.preheader142 ] %.add94 = add nsw i64 %.idx93, -64 %.ptr96 = getelementptr inbounds i8, ptr %0, i64 %.add94 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr96) #18 - %173 = icmp eq i64 %.add94, 72 - br i1 %173, label %.preheader, label %.preheader141 + %174 = icmp eq i64 %.add94, 72 + br i1 %174, label %.preheader, label %.preheader141 .preheader: ; preds = %.preheader141, %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit %.idx99 = phi i64 [ %.add100, %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit ], [ 72, %.preheader141 ] %.add100 = add nsw i64 %.idx99, -8 %.ptr102 = getelementptr inbounds i8, ptr %0, i64 %.add100 invoke void @_ZN5boost6detail12set_tss_dataEPKvPFvPFvPvES3_ES5_S3_b(ptr noundef nonnull align 8 dereferenceable(8) %.ptr102, ptr noundef null, ptr noundef null, ptr noundef null, i1 noundef zeroext true) - to label %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit unwind label %174 + to label %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit unwind label %175 -174: ; preds = %.preheader - %175 = landingpad { ptr, i32 } +175: ; preds = %.preheader + %176 = landingpad { ptr, i32 } catch ptr null - %176 = extractvalue { ptr, i32 } %175, 0 - call void @__clang_call_terminate(ptr %176) #19 + %177 = extractvalue { ptr, i32 } %176, 0 + call void @__clang_call_terminate(ptr %177) #19 unreachable _ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit: ; preds = %.preheader - %177 = icmp eq i64 %.add100, 16 - br i1 %177, label %178, label %.preheader + %178 = icmp eq i64 %.add100, 16 + br i1 %178, label %179, label %.preheader -178: ; preds = %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit +179: ; preds = %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit call void @_ZNSt6locale5facetD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %0) #18 resume { ptr, i32 } %.pn75.pn } diff --git a/bench/box2d/optimized/linux_joystick.ll b/bench/box2d/optimized/linux_joystick.ll index 8345c50a83b..69861813fc6 100644 --- a/bench/box2d/optimized/linux_joystick.ll +++ b/bench/box2d/optimized/linux_joystick.ll @@ -677,14 +677,14 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ ._crit_edge: ; preds = %handleAbsEvent.exit, %2 %16 = load i32, ptr %4, align 4, !tbaa !93 %17 = icmp eq i32 %16, 19 - br i1 %17, label %18, label %88 + br i1 %17, label %18, label %89 18: ; preds = %._crit_edge tail call void @_glfwInputJoystick(ptr noundef nonnull %0, i32 noundef 262146) #13 %19 = load i32, ptr %5, align 8, !tbaa !94 %20 = tail call i32 @close(i32 noundef %19) #13 tail call void @_glfwFreeJoystick(ptr noundef nonnull %0) #13 - br label %88 + br label %89 21: ; preds = %.lr.ph, %handleAbsEvent.exit %22 = load i16, ptr %9, align 8, !tbaa !107 @@ -739,7 +739,7 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ %43 = load i32, ptr %42, align 4, !tbaa !93 %44 = and i32 %39, 65528 %or.cond.i = icmp eq i32 %44, 16 - br i1 %or.cond.i, label %45, label %69 + br i1 %or.cond.i, label %45, label %70 45: ; preds = %37 %46 = add nsw i32 %39, -16 @@ -773,53 +773,54 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ 61: ; preds = %60, %59, %52 %62 = load i32, ptr %50, align 4, !tbaa !93 %63 = sext i32 %62 to i64 - %64 = getelementptr inbounds nuw i8, ptr %50, i64 4 - %65 = load i32, ptr %64, align 4, !tbaa !93 - %66 = sext i32 %65 to i64 - %67 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %63, i64 %66 - %68 = load i8, ptr %67, align 1, !tbaa !100 - tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %43, i8 noundef signext %68) #13 + %64 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %63 + %65 = getelementptr inbounds nuw i8, ptr %50, i64 4 + %66 = load i32, ptr %65, align 4, !tbaa !93 + %67 = sext i32 %66 to i64 + %68 = getelementptr inbounds [3 x i8], ptr %64, i64 0, i64 %67 + %69 = load i8, ptr %68, align 1, !tbaa !100 + tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %43, i8 noundef signext %69) #13 br label %handleAbsEvent.exit -69: ; preds = %37 - %70 = getelementptr inbounds nuw [64 x %struct.input_absinfo], ptr %13, i64 0, i64 %41 - %71 = sitofp i32 %40 to float - %72 = getelementptr inbounds nuw i8, ptr %70, i64 8 - %73 = load i32, ptr %72, align 4, !tbaa !113 - %74 = getelementptr inbounds nuw i8, ptr %70, i64 4 - %75 = load i32, ptr %74, align 4, !tbaa !115 - %.not.i8 = icmp eq i32 %73, %75 - br i1 %.not.i8, label %84, label %76 - -76: ; preds = %69 - %77 = sub nsw i32 %73, %75 - %78 = sitofp i32 %75 to float - %79 = fsub float %71, %78 - %80 = sitofp i32 %77 to float - %81 = fdiv float %79, %80 - %82 = fmul float %81, 2.000000e+00 - %83 = fadd float %82, -1.000000e+00 - br label %84 - -84: ; preds = %76, %69 - %.0.i = phi float [ %83, %76 ], [ %71, %69 ] +70: ; preds = %37 + %71 = getelementptr inbounds nuw [64 x %struct.input_absinfo], ptr %13, i64 0, i64 %41 + %72 = sitofp i32 %40 to float + %73 = getelementptr inbounds nuw i8, ptr %71, i64 8 + %74 = load i32, ptr %73, align 4, !tbaa !113 + %75 = getelementptr inbounds nuw i8, ptr %71, i64 4 + %76 = load i32, ptr %75, align 4, !tbaa !115 + %.not.i8 = icmp eq i32 %74, %76 + br i1 %.not.i8, label %85, label %77 + +77: ; preds = %70 + %78 = sub nsw i32 %74, %76 + %79 = sitofp i32 %76 to float + %80 = fsub float %72, %79 + %81 = sitofp i32 %78 to float + %82 = fdiv float %80, %81 + %83 = fmul float %82, 2.000000e+00 + %84 = fadd float %83, -1.000000e+00 + br label %85 + +85: ; preds = %77, %70 + %.0.i = phi float [ %84, %77 ], [ %72, %70 ] tail call void @_glfwInputJoystickAxis(ptr noundef nonnull %0, i32 noundef %43, float noundef %.0.i) #13 br label %handleAbsEvent.exit -handleAbsEvent.exit: ; preds = %84, %61, %.thread, %29, %28, %27 +handleAbsEvent.exit: ; preds = %85, %61, %.thread, %29, %28, %27 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #13 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #13 store i32 0, ptr %4, align 4, !tbaa !93 - %85 = load i32, ptr %5, align 8, !tbaa !94 - %86 = call i64 @read(i32 noundef %85, ptr noundef nonnull %3, i64 noundef 24) #13 - %87 = icmp slt i64 %86, 0 - br i1 %87, label %._crit_edge, label %21 + %86 = load i32, ptr %5, align 8, !tbaa !94 + %87 = call i64 @read(i32 noundef %86, ptr noundef nonnull %3, i64 noundef 24) #13 + %88 = icmp slt i64 %87, 0 + br i1 %88, label %._crit_edge, label %21 -88: ; preds = %18, %._crit_edge +89: ; preds = %18, %._crit_edge call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #13 - %89 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %90 = load i32, ptr %89, align 4, !tbaa !98 - ret i32 %90 + %90 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %91 = load i32, ptr %90, align 4, !tbaa !98 + ret i32 %91 } ; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) @@ -856,7 +857,7 @@ define internal fastcc void @pollAbsState(ptr noundef %0) unnamed_addr #0 { %19 = load i32, ptr %8, align 4, !tbaa !93 %20 = and i64 %indvars.iv, 56 %or.cond.i = icmp eq i64 %20, 16 - br i1 %or.cond.i, label %21, label %44 + br i1 %or.cond.i, label %21, label %45 21: ; preds = %17 %22 = add nuw i64 %indvars.iv, 4294967280 @@ -889,39 +890,40 @@ define internal fastcc void @pollAbsState(ptr noundef %0) unnamed_addr #0 { 36: ; preds = %35, %34, %27 %37 = load i32, ptr %25, align 4, !tbaa !93 %38 = sext i32 %37 to i64 - %39 = getelementptr inbounds nuw i8, ptr %25, i64 4 - %40 = load i32, ptr %39, align 4, !tbaa !93 - %41 = sext i32 %40 to i64 - %42 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %38, i64 %41 - %43 = load i8, ptr %42, align 1, !tbaa !100 - tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %19, i8 noundef signext %43) #13 + %39 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %38 + %40 = getelementptr inbounds nuw i8, ptr %25, i64 4 + %41 = load i32, ptr %40, align 4, !tbaa !93 + %42 = sext i32 %41 to i64 + %43 = getelementptr inbounds [3 x i8], ptr %39, i64 0, i64 %42 + %44 = load i8, ptr %43, align 1, !tbaa !100 + tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %19, i8 noundef signext %44) #13 br label %handleAbsEvent.exit -44: ; preds = %17 - %45 = sitofp i32 %18 to float - %46 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %47 = load i32, ptr %46, align 4, !tbaa !113 - %48 = getelementptr inbounds nuw i8, ptr %12, i64 4 - %49 = load i32, ptr %48, align 4, !tbaa !115 - %.not.i = icmp eq i32 %47, %49 - br i1 %.not.i, label %58, label %50 - -50: ; preds = %44 - %51 = sub nsw i32 %47, %49 - %52 = sitofp i32 %49 to float - %53 = fsub float %45, %52 - %54 = sitofp i32 %51 to float - %55 = fdiv float %53, %54 - %56 = fmul float %55, 2.000000e+00 - %57 = fadd float %56, -1.000000e+00 - br label %58 - -58: ; preds = %50, %44 - %.0.i = phi float [ %57, %50 ], [ %45, %44 ] +45: ; preds = %17 + %46 = sitofp i32 %18 to float + %47 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %48 = load i32, ptr %47, align 4, !tbaa !113 + %49 = getelementptr inbounds nuw i8, ptr %12, i64 4 + %50 = load i32, ptr %49, align 4, !tbaa !115 + %.not.i = icmp eq i32 %48, %50 + br i1 %.not.i, label %59, label %51 + +51: ; preds = %45 + %52 = sub nsw i32 %48, %50 + %53 = sitofp i32 %50 to float + %54 = fsub float %46, %53 + %55 = sitofp i32 %52 to float + %56 = fdiv float %54, %55 + %57 = fmul float %56, 2.000000e+00 + %58 = fadd float %57, -1.000000e+00 + br label %59 + +59: ; preds = %51, %45 + %.0.i = phi float [ %58, %51 ], [ %46, %45 ] tail call void @_glfwInputJoystickAxis(ptr noundef nonnull %0, i32 noundef %19, float noundef %.0.i) #13 br label %handleAbsEvent.exit -handleAbsEvent.exit: ; preds = %58, %36, %11, %7 +handleAbsEvent.exit: ; preds = %59, %36, %11, %7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 64 br i1 %exitcond.not, label %6, label %7 diff --git a/bench/bullet3/optimized/btCollisionDispatcher.ll b/bench/bullet3/optimized/btCollisionDispatcher.ll index f47e562787f..99788e3e25a 100644 --- a/bench/bullet3/optimized/btCollisionDispatcher.ll +++ b/bench/bullet3/optimized/btCollisionDispatcher.ll @@ -85,7 +85,7 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( %11 = getelementptr inbounds nuw i8, ptr %10, i64 24 %12 = load ptr, ptr %11, align 8 %13 = invoke noundef ptr %12(ptr noundef nonnull align 8 dereferenceable(8) %1) - to label %14 unwind label %26 + to label %14 unwind label %28 14: ; preds = %2 %15 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -94,7 +94,7 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 %18 = load ptr, ptr %17, align 8 %19 = invoke noundef ptr %18(ptr noundef nonnull align 8 dereferenceable(8) %1) - to label %20 unwind label %26 + to label %20 unwind label %28 20: ; preds = %14 %21 = getelementptr inbounds nuw i8, ptr %0, i64 64 @@ -103,60 +103,62 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( %23 = getelementptr inbounds nuw i8, ptr %0, i64 10440 br label %.preheader -.preheader: ; preds = %20, %25 - %indvars.iv26 = phi i64 [ 0, %20 ], [ %indvars.iv.next27, %25 ] - %24 = trunc nuw nsw i64 %indvars.iv26 to i32 - br label %28 +.preheader: ; preds = %20, %27 + %indvars.iv26 = phi i64 [ 0, %20 ], [ %indvars.iv.next27, %27 ] + %24 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %22, i64 0, i64 %indvars.iv26 + %25 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %23, i64 0, i64 %indvars.iv26 + %26 = trunc nuw nsw i64 %indvars.iv26 to i32 + br label %30 -25: ; preds = %42 +27: ; preds = %44 %indvars.iv.next27 = add nuw nsw i64 %indvars.iv26, 1 %exitcond29.not = icmp eq i64 %indvars.iv.next27, 36 - br i1 %exitcond29.not, label %46, label %.preheader, !llvm.loop !27 + br i1 %exitcond29.not, label %48, label %.preheader, !llvm.loop !27 -26: ; preds = %14, %2 - %27 = landingpad { ptr, i32 } +28: ; preds = %14, %2 + %29 = landingpad { ptr, i32 } cleanup - br label %47 - -28: ; preds = %.preheader, %42 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %42 ] - %29 = load ptr, ptr %8, align 8, !tbaa !23 - %30 = load ptr, ptr %29, align 8, !tbaa !4 - %31 = getelementptr inbounds nuw i8, ptr %30, i64 32 - %32 = load ptr, ptr %31, align 8 - %33 = trunc nuw nsw i64 %indvars.iv to i32 - %34 = invoke noundef ptr %32(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef %24, i32 noundef %33) - to label %35 unwind label %44 - -35: ; preds = %28 - %36 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %22, i64 0, i64 %indvars.iv26, i64 %indvars.iv - store ptr %34, ptr %36, align 8, !tbaa !29 - %37 = load ptr, ptr %8, align 8, !tbaa !23 - %38 = load ptr, ptr %37, align 8, !tbaa !4 - %39 = getelementptr inbounds nuw i8, ptr %38, i64 40 - %40 = load ptr, ptr %39, align 8 - %41 = invoke noundef ptr %40(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef %24, i32 noundef %33) - to label %42 unwind label %44 - -42: ; preds = %35 - %43 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %23, i64 0, i64 %indvars.iv26, i64 %indvars.iv - store ptr %41, ptr %43, align 8, !tbaa !29 + br label %49 + +30: ; preds = %.preheader, %44 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %44 ] + %31 = load ptr, ptr %8, align 8, !tbaa !23 + %32 = load ptr, ptr %31, align 8, !tbaa !4 + %33 = getelementptr inbounds nuw i8, ptr %32, i64 32 + %34 = load ptr, ptr %33, align 8 + %35 = trunc nuw nsw i64 %indvars.iv to i32 + %36 = invoke noundef ptr %34(ptr noundef nonnull align 8 dereferenceable(8) %31, i32 noundef %26, i32 noundef %35) + to label %37 unwind label %46 + +37: ; preds = %30 + %38 = getelementptr inbounds nuw [36 x ptr], ptr %24, i64 0, i64 %indvars.iv + store ptr %36, ptr %38, align 8, !tbaa !29 + %39 = load ptr, ptr %8, align 8, !tbaa !23 + %40 = load ptr, ptr %39, align 8, !tbaa !4 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 40 + %42 = load ptr, ptr %41, align 8 + %43 = invoke noundef ptr %42(ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef %26, i32 noundef %35) + to label %44 unwind label %46 + +44: ; preds = %37 + %45 = getelementptr inbounds nuw [36 x ptr], ptr %25, i64 0, i64 %indvars.iv + store ptr %43, ptr %45, align 8, !tbaa !29 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 36 - br i1 %exitcond.not, label %25, label %28, !llvm.loop !31 + br i1 %exitcond.not, label %27, label %30, !llvm.loop !31 -44: ; preds = %35, %28 - %45 = landingpad { ptr, i32 } +46: ; preds = %37, %30 + %47 = landingpad { ptr, i32 } cleanup - br label %47 + br label %49 -46: ; preds = %25 +48: ; preds = %27 ret void -47: ; preds = %44, %26 - %.pn = phi { ptr, i32 } [ %45, %44 ], [ %27, %26 ] - %48 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %48) #11 +49: ; preds = %46, %28 + %.pn = phi { ptr, i32 } [ %47, %46 ], [ %29, %28 ] + %50 = getelementptr inbounds nuw i8, ptr %0, i64 16 + tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %50) #11 tail call void @_ZN12btDispatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 resume { ptr, i32 } %.pn } @@ -315,9 +317,10 @@ declare void @_ZN12btDispatcherD2Ev(ptr noundef nonnull align 8 dereferenceable( define dso_local void @_ZN21btCollisionDispatcher27registerCollisionCreateFuncEiiP30btCollisionAlgorithmCreateFunc(ptr noundef nonnull writeonly align 8 captures(none) dereferenceable(20816) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3) local_unnamed_addr #4 align 2 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 72 %6 = sext i32 %1 to i64 - %7 = sext i32 %2 to i64 - %8 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6, i64 %7 - store ptr %3, ptr %8, align 8, !tbaa !29 + %7 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6 + %8 = sext i32 %2 to i64 + %9 = getelementptr inbounds [36 x ptr], ptr %7, i64 0, i64 %8 + store ptr %3, ptr %9, align 8, !tbaa !29 ret void } @@ -325,9 +328,10 @@ define dso_local void @_ZN21btCollisionDispatcher27registerCollisionCreateFuncEi define dso_local void @_ZN21btCollisionDispatcher31registerClosestPointsCreateFuncEiiP30btCollisionAlgorithmCreateFunc(ptr noundef nonnull writeonly align 8 captures(none) dereferenceable(20816) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3) local_unnamed_addr #4 align 2 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 10440 %6 = sext i32 %1 to i64 - %7 = sext i32 %2 to i64 - %8 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6, i64 %7 - store ptr %3, ptr %8, align 8, !tbaa !29 + %7 = getelementptr inbounds [36 x [36 x ptr]], ptr %5, i64 0, i64 %6 + %8 = sext i32 %2 to i64 + %9 = getelementptr inbounds [36 x ptr], ptr %7, i64 0, i64 %8 + store ptr %3, ptr %9, align 8, !tbaa !29 ret void } @@ -721,14 +725,15 @@ define dso_local noundef ptr @_ZN21btCollisionDispatcher13findAlgorithmEPK24btCo %18 = sext i32 %17 to i64 %. = select i1 %8, i64 72, i64 10440 %19 = getelementptr inbounds nuw i8, ptr %0, i64 %. - %20 = getelementptr inbounds [36 x [36 x ptr]], ptr %19, i64 0, i64 %13, i64 %18 - %21 = load ptr, ptr %20, align 8, !tbaa !29 - %22 = load ptr, ptr %21, align 8, !tbaa !4 - %23 = getelementptr inbounds nuw i8, ptr %22, i64 16 - %24 = load ptr, ptr %23, align 8 - %25 = call noundef ptr %24(ptr noundef nonnull align 8 dereferenceable(9) %21, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %1, ptr noundef nonnull %2) + %20 = getelementptr inbounds [36 x [36 x ptr]], ptr %19, i64 0, i64 %13 + %21 = getelementptr inbounds [36 x ptr], ptr %20, i64 0, i64 %18 + %22 = load ptr, ptr %21, align 8, !tbaa !29 + %23 = load ptr, ptr %22, align 8, !tbaa !4 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %25 = load ptr, ptr %24, align 8 + %26 = call noundef ptr %25(ptr noundef nonnull align 8 dereferenceable(9) %22, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %1, ptr noundef nonnull %2) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11 - ret ptr %25 + ret ptr %26 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable diff --git a/bench/bullet3/optimized/btDeformableBodySolver.ll b/bench/bullet3/optimized/btDeformableBodySolver.ll index 37457e1cd84..e0f266bd8f0 100644 --- a/bench/bullet3/optimized/btDeformableBodySolver.ll +++ b/bench/bullet3/optimized/btDeformableBodySolver.ll @@ -12535,100 +12535,106 @@ _ZN11btSparseSdfILi3EE5ResetEv.exit: ; preds = %._crit_edge.i, %137 %159 = getelementptr inbounds nuw i8, ptr %.1, i64 268 store i32 %158, ptr %159, align 4, !tbaa !412 %160 = sext i32 %67 to i64 - %161 = sext i32 %73 to i64 - %162 = sext i32 %79 to i64 - %163 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %161, i64 %162 - %164 = load float, ptr %163, align 4, !tbaa !45 + %161 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160 + %162 = sext i32 %73 to i64 + %163 = getelementptr inbounds [4 x [4 x float]], ptr %161, i64 0, i64 %162 + %164 = sext i32 %79 to i64 + %165 = getelementptr inbounds [4 x float], ptr %163, i64 0, i64 %164 + %166 = load float, ptr %165, align 4, !tbaa !45 %sext = add i64 %.sroa.5.0.insert.shift.i, 4294967296 - %165 = ashr exact i64 %sext, 32 - %166 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %161, i64 %162 - %167 = load float, ptr %166, align 4, !tbaa !45 + %167 = ashr exact i64 %sext, 32 + %168 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %167 + %169 = getelementptr inbounds [4 x [4 x float]], ptr %168, i64 0, i64 %162 + %170 = getelementptr inbounds [4 x float], ptr %169, i64 0, i64 %164 + %171 = load float, ptr %170, align 4, !tbaa !45 %sext138 = add i64 %.sroa.5.0.insert.shift.i141, 4294967296 - %168 = ashr exact i64 %sext138, 32 - %169 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %168, i64 %162 - %170 = load float, ptr %169, align 4, !tbaa !45 - %171 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %168, i64 %162 - %172 = load float, ptr %171, align 4, !tbaa !45 - %sext139 = add i64 %.sroa.5.0.insert.shift.i147, 4294967296 - %173 = ashr exact i64 %sext139, 32 - %174 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %161, i64 %173 + %172 = ashr exact i64 %sext138, 32 + %173 = getelementptr inbounds [4 x [4 x float]], ptr %168, i64 0, i64 %172 + %174 = getelementptr inbounds [4 x float], ptr %173, i64 0, i64 %164 %175 = load float, ptr %174, align 4, !tbaa !45 - %176 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %161, i64 %173 - %177 = load float, ptr %176, align 4, !tbaa !45 - %178 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165, i64 %168, i64 %173 - %179 = load float, ptr %178, align 4, !tbaa !45 - %180 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %160, i64 %168, i64 %173 + %176 = getelementptr inbounds [4 x [4 x float]], ptr %161, i64 0, i64 %172 + %177 = getelementptr inbounds [4 x float], ptr %176, i64 0, i64 %164 + %178 = load float, ptr %177, align 4, !tbaa !45 + %sext139 = add i64 %.sroa.5.0.insert.shift.i147, 4294967296 + %179 = ashr exact i64 %sext139, 32 + %180 = getelementptr inbounds [4 x float], ptr %163, i64 0, i64 %179 %181 = load float, ptr %180, align 4, !tbaa !45 - %182 = fsub float %167, %164 - %183 = fsub float %170, %172 - %184 = fsub float %177, %175 - %185 = fsub float %179, %181 - %186 = fsub float %172, %164 - %187 = fsub float %170, %167 - %188 = fsub float %181, %175 - %189 = fsub float %179, %177 - %190 = fsub float %175, %164 - %191 = fsub float %177, %167 - %192 = fsub float %181, %172 - %193 = fsub float %179, %170 - %194 = fsub float %183, %182 - %195 = tail call noundef float @llvm.fmuladd.f32(float %194, float %75, float %182) - %196 = fsub float %185, %184 - %197 = tail call noundef float @llvm.fmuladd.f32(float %196, float %75, float %184) - %198 = fsub float %197, %195 - %199 = tail call noundef float @llvm.fmuladd.f32(float %198, float %81, float %195) - %200 = fsub float %187, %186 - %201 = tail call noundef float @llvm.fmuladd.f32(float %200, float %69, float %186) - %202 = fsub float %189, %188 - %203 = tail call noundef float @llvm.fmuladd.f32(float %202, float %69, float %188) + %182 = getelementptr inbounds [4 x float], ptr %169, i64 0, i64 %179 + %183 = load float, ptr %182, align 4, !tbaa !45 + %184 = getelementptr inbounds [4 x float], ptr %173, i64 0, i64 %179 + %185 = load float, ptr %184, align 4, !tbaa !45 + %186 = getelementptr inbounds [4 x float], ptr %176, i64 0, i64 %179 + %187 = load float, ptr %186, align 4, !tbaa !45 + %188 = fsub float %171, %166 + %189 = fsub float %175, %178 + %190 = fsub float %183, %181 + %191 = fsub float %185, %187 + %192 = fsub float %178, %166 + %193 = fsub float %175, %171 + %194 = fsub float %187, %181 + %195 = fsub float %185, %183 + %196 = fsub float %181, %166 + %197 = fsub float %183, %171 + %198 = fsub float %187, %178 + %199 = fsub float %185, %175 + %200 = fsub float %189, %188 + %201 = tail call noundef float @llvm.fmuladd.f32(float %200, float %75, float %188) + %202 = fsub float %191, %190 + %203 = tail call noundef float @llvm.fmuladd.f32(float %202, float %75, float %190) %204 = fsub float %203, %201 %205 = tail call noundef float @llvm.fmuladd.f32(float %204, float %81, float %201) - %206 = fsub float %191, %190 - %207 = tail call noundef float @llvm.fmuladd.f32(float %206, float %69, float %190) - %208 = fsub float %193, %192 - %209 = tail call noundef float @llvm.fmuladd.f32(float %208, float %69, float %192) + %206 = fsub float %193, %192 + %207 = tail call noundef float @llvm.fmuladd.f32(float %206, float %69, float %192) + %208 = fsub float %195, %194 + %209 = tail call noundef float @llvm.fmuladd.f32(float %208, float %69, float %194) %210 = fsub float %209, %207 - %211 = tail call noundef float @llvm.fmuladd.f32(float %210, float %75, float %207) - %212 = fmul float %205, %205 - %213 = tail call float @llvm.fmuladd.f32(float %199, float %199, float %212) - %214 = tail call noundef float @llvm.fmuladd.f32(float %211, float %211, float %213) - %215 = fcmp ult float %214, 0x3D10000000000000 - br i1 %215, label %221, label %216 - -216: ; preds = %.loopexit - %sqrt.i = tail call float @llvm.sqrt.f32(float %214) - %217 = fdiv float 1.000000e+00, %sqrt.i - %218 = fmul float %199, %217 - %219 = fmul float %205, %217 - %220 = fmul float %211, %217 + %211 = tail call noundef float @llvm.fmuladd.f32(float %210, float %81, float %207) + %212 = fsub float %197, %196 + %213 = tail call noundef float @llvm.fmuladd.f32(float %212, float %69, float %196) + %214 = fsub float %199, %198 + %215 = tail call noundef float @llvm.fmuladd.f32(float %214, float %69, float %198) + %216 = fsub float %215, %213 + %217 = tail call noundef float @llvm.fmuladd.f32(float %216, float %75, float %213) + %218 = fmul float %211, %211 + %219 = tail call float @llvm.fmuladd.f32(float %205, float %205, float %218) + %220 = tail call noundef float @llvm.fmuladd.f32(float %217, float %217, float %219) + %221 = fcmp ult float %220, 0x3D10000000000000 + br i1 %221, label %227, label %222 + +222: ; preds = %.loopexit + %sqrt.i = tail call float @llvm.sqrt.f32(float %220) + %223 = fdiv float 1.000000e+00, %sqrt.i + %224 = fmul float %205, %223 + %225 = fmul float %211, %223 + %226 = fmul float %217, %223 br label %_ZN9btVector313safeNormalizeEv.exit -221: ; preds = %.loopexit - %222 = getelementptr inbounds nuw i8, ptr %3, i64 12 - store float 0.000000e+00, ptr %222, align 4, !tbaa !45 +227: ; preds = %.loopexit + %228 = getelementptr inbounds nuw i8, ptr %3, i64 12 + store float 0.000000e+00, ptr %228, align 4, !tbaa !45 br label %_ZN9btVector313safeNormalizeEv.exit -_ZN9btVector313safeNormalizeEv.exit: ; preds = %216, %221 - %.sink7.i = phi float [ 1.000000e+00, %221 ], [ %218, %216 ] - %.sink6.i = phi float [ 0.000000e+00, %221 ], [ %219, %216 ] - %.sink.i = phi float [ 0.000000e+00, %221 ], [ %220, %216 ] - %223 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %224 = getelementptr inbounds nuw i8, ptr %3, i64 4 +_ZN9btVector313safeNormalizeEv.exit: ; preds = %222, %227 + %.sink7.i = phi float [ 1.000000e+00, %227 ], [ %224, %222 ] + %.sink6.i = phi float [ 0.000000e+00, %227 ], [ %225, %222 ] + %.sink.i = phi float [ 0.000000e+00, %227 ], [ %226, %222 ] + %229 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %230 = getelementptr inbounds nuw i8, ptr %3, i64 4 store float %.sink7.i, ptr %3, align 4, !tbaa !45 - store float %.sink6.i, ptr %224, align 4, !tbaa !45 - store float %.sink.i, ptr %223, align 4, !tbaa !45 - %225 = tail call noundef float @llvm.fmuladd.f32(float %182, float %69, float %164) - %226 = tail call noundef float @llvm.fmuladd.f32(float %183, float %69, float %172) - %227 = fsub float %226, %225 - %228 = tail call noundef float @llvm.fmuladd.f32(float %227, float %75, float %225) - %229 = tail call noundef float @llvm.fmuladd.f32(float %184, float %69, float %175) - %230 = tail call noundef float @llvm.fmuladd.f32(float %185, float %69, float %181) - %231 = fsub float %230, %229 - %232 = tail call noundef float @llvm.fmuladd.f32(float %231, float %75, float %229) - %233 = fsub float %232, %228 - %234 = tail call noundef float @llvm.fmuladd.f32(float %233, float %81, float %228) - %235 = fsub float %234, %4 - ret float %235 + store float %.sink6.i, ptr %230, align 4, !tbaa !45 + store float %.sink.i, ptr %229, align 4, !tbaa !45 + %231 = tail call noundef float @llvm.fmuladd.f32(float %188, float %69, float %166) + %232 = tail call noundef float @llvm.fmuladd.f32(float %189, float %69, float %178) + %233 = fsub float %232, %231 + %234 = tail call noundef float @llvm.fmuladd.f32(float %233, float %75, float %231) + %235 = tail call noundef float @llvm.fmuladd.f32(float %190, float %69, float %181) + %236 = tail call noundef float @llvm.fmuladd.f32(float %191, float %69, float %187) + %237 = fsub float %236, %235 + %238 = tail call noundef float @llvm.fmuladd.f32(float %237, float %75, float %235) + %239 = fsub float %238, %234 + %240 = tail call noundef float @llvm.fmuladd.f32(float %239, float %81, float %234) + %241 = fsub float %240, %4 + ret float %241 } ; Function Attrs: inlinehint mustprogress uwtable @@ -16790,30 +16796,32 @@ define linkonce_odr dso_local void @_ZN11btSparseSdfILi3EE9BuildCellERNS0_4CellE ret void 33: ; preds = %2, %38 - %indvars.iv41 = phi i64 [ 0, %2 ], [ %indvars.iv.next42, %38 ] + %indvars.iv44 = phi i64 [ 0, %2 ], [ %indvars.iv.next45, %38 ] %34 = load float, ptr %18, align 8, !tbaa !410 - %35 = trunc nuw nsw i64 %indvars.iv41 to i32 + %35 = trunc nuw nsw i64 %indvars.iv44 to i32 %36 = uitofp nneg i32 %35 to float %37 = call float @llvm.fmuladd.f32(float %34, float %36, float %22) + %invariant.gep36 = getelementptr inbounds nuw [4 x float], ptr %1, i64 0, i64 %indvars.iv44 br label %39 38: ; preds = %44 - %indvars.iv.next42 = add nuw nsw i64 %indvars.iv41, 1 - %exitcond44.not = icmp eq i64 %indvars.iv.next42, 4 - br i1 %exitcond44.not, label %32, label %33, !llvm.loop !456 + %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 + %exitcond47.not = icmp eq i64 %indvars.iv.next45, 4 + br i1 %exitcond47.not, label %32, label %33, !llvm.loop !456 39: ; preds = %33, %44 - %indvars.iv37 = phi i64 [ 0, %33 ], [ %indvars.iv.next38, %44 ] + %indvars.iv40 = phi i64 [ 0, %33 ], [ %indvars.iv.next41, %44 ] %40 = load float, ptr %18, align 8, !tbaa !410 - %41 = trunc nuw nsw i64 %indvars.iv37 to i32 + %41 = trunc nuw nsw i64 %indvars.iv40 to i32 %42 = uitofp nneg i32 %41 to float %43 = call float @llvm.fmuladd.f32(float %40, float %42, float %21) + %gep = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep36, i64 0, i64 %indvars.iv40 br label %45 44: ; preds = %_ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit - %indvars.iv.next38 = add nuw nsw i64 %indvars.iv37, 1 - %exitcond40.not = icmp eq i64 %indvars.iv.next38, 4 - br i1 %exitcond40.not, label %38, label %39, !llvm.loop !457 + %indvars.iv.next41 = add nuw nsw i64 %indvars.iv40, 1 + %exitcond43.not = icmp eq i64 %indvars.iv.next41, 4 + br i1 %exitcond43.not, label %38, label %39, !llvm.loop !457 45: ; preds = %39, %_ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit %indvars.iv = phi i64 [ 0, %39 ], [ %indvars.iv.next, %_ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit ] @@ -16848,8 +16856,8 @@ define linkonce_odr dso_local void @_ZN11btSparseSdfILi3EE9BuildCellERNS0_4CellE _ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit: ; preds = %45, %54 %.0.i = phi float [ %55, %54 ], [ 0.000000e+00, %45 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #27 - %56 = getelementptr inbounds nuw [4 x [4 x [4 x float]]], ptr %1, i64 0, i64 %indvars.iv, i64 %indvars.iv37, i64 %indvars.iv41 - store float %.0.i, ptr %56, align 4, !tbaa !45 + %gep35 = getelementptr inbounds nuw [4 x [4 x [4 x float]]], ptr %gep, i64 0, i64 %indvars.iv + store float %.0.i, ptr %gep35, align 4, !tbaa !45 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #27 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 diff --git a/bench/clamav/optimized/Ppmd7.ll b/bench/clamav/optimized/Ppmd7.ll index cf7cb44d356..2bd212969e0 100644 --- a/bench/clamav/optimized/Ppmd7.ll +++ b/bench/clamav/optimized/Ppmd7.ll @@ -289,31 +289,32 @@ define internal fastcc void @RestartModel(ptr noundef captures(none) initializes %exitcond87.not = icmp eq i64 %indvars.iv.next85, 128 br i1 %exitcond87.not, label %.preheader67, label %.preheader68 -.preheader: ; preds = %.preheader67, %70 - %indvars.iv92 = phi i64 [ 0, %.preheader67 ], [ %indvars.iv.next93, %70 ] - %63 = trunc i64 %indvars.iv92 to i16 - %64 = mul nuw nsw i16 %63, 40 - %65 = add nuw nsw i16 %64, 80 - br label %66 - -66: ; preds = %.preheader, %66 - %indvars.iv88 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next89, %66 ] - %67 = getelementptr inbounds nuw [25 x [16 x %struct.CPpmd_See]], ptr %49, i64 0, i64 %indvars.iv92, i64 %indvars.iv88 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 2 - store i8 3, ptr %68, align 2, !tbaa !44 - store i16 %65, ptr %67, align 2, !tbaa !45 - %69 = getelementptr inbounds nuw i8, ptr %67, i64 3 - store i8 4, ptr %69, align 1, !tbaa !46 +.preheader: ; preds = %.preheader67, %71 + %indvars.iv92 = phi i64 [ 0, %.preheader67 ], [ %indvars.iv.next93, %71 ] + %63 = getelementptr inbounds nuw [25 x [16 x %struct.CPpmd_See]], ptr %49, i64 0, i64 %indvars.iv92 + %64 = trunc i64 %indvars.iv92 to i16 + %65 = mul nuw nsw i16 %64, 40 + %66 = add nuw nsw i16 %65, 80 + br label %67 + +67: ; preds = %.preheader, %67 + %indvars.iv88 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next89, %67 ] + %68 = getelementptr inbounds nuw [16 x %struct.CPpmd_See], ptr %63, i64 0, i64 %indvars.iv88 + %69 = getelementptr inbounds nuw i8, ptr %68, i64 2 + store i8 3, ptr %69, align 2, !tbaa !44 + store i16 %66, ptr %68, align 2, !tbaa !45 + %70 = getelementptr inbounds nuw i8, ptr %68, i64 3 + store i8 4, ptr %70, align 1, !tbaa !46 %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 %exitcond91.not = icmp eq i64 %indvars.iv.next89, 16 - br i1 %exitcond91.not, label %70, label %66 + br i1 %exitcond91.not, label %71, label %67 -70: ; preds = %66 +71: ; preds = %67 %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 %exitcond95.not = icmp eq i64 %indvars.iv.next93, 25 - br i1 %exitcond95.not, label %71, label %.preheader + br i1 %exitcond95.not, label %72, label %.preheader -71: ; preds = %70 +72: ; preds = %71 ret void } diff --git a/bench/clamav/optimized/pe_icons.ll b/bench/clamav/optimized/pe_icons.ll index 5e48aee64e1..e5fc3285db9 100644 --- a/bench/clamav/optimized/pe_icons.ll +++ b/bench/clamav/optimized/pe_icons.ll @@ -1521,19 +1521,19 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, %5 = icmp ult i32 %2, 2 %6 = icmp ne ptr %3, null %or.cond = and i1 %5, %6 - br i1 %or.cond, label %7, label %45 + br i1 %or.cond, label %7, label %46 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %3, i64 48 %9 = load ptr, ptr %8, align 8, !tbaa !30 %.not = icmp eq ptr %9, null - br i1 %.not, label %45, label %10 + br i1 %.not, label %46, label %10 10: ; preds = %7 %11 = getelementptr inbounds nuw i8, ptr %9, i64 224 %12 = load ptr, ptr %11, align 8, !tbaa !80 %.not40 = icmp eq ptr %12, null - br i1 %.not40, label %45, label %13 + br i1 %.not40, label %46, label %13 13: ; preds = %10 %14 = getelementptr inbounds nuw i8, ptr %12, i64 16 @@ -1541,7 +1541,7 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, %16 = getelementptr inbounds nuw [2 x i32], ptr %14, i64 0, i64 %15 %17 = load i32, ptr %16, align 4, !tbaa !60 %.not41 = icmp eq i32 %17, 0 - br i1 %.not41, label %45, label %18 + br i1 %.not41, label %46, label %18 18: ; preds = %13 %19 = load i8, ptr %0, align 1, !tbaa !73 @@ -1557,7 +1557,7 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, 24: ; preds = %21 %25 = getelementptr inbounds nuw [2 x [4 x i64]], ptr %1, i64 0, i64 %15 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %25, i8 -1, i64 32, i1 false) - br label %45 + br label %46 26: ; preds = %21, %18 %27 = getelementptr inbounds nuw [2 x ptr], ptr %12, i64 0, i64 %15 @@ -1585,20 +1585,21 @@ define void @cli_icongroupset_add(ptr noundef %0, ptr noundef captures(none) %1, .thread: ; preds = %33, %34 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.14, i32 noundef %2, ptr noundef nonnull %0) #13 - br label %45 + br label %46 37: ; preds = %34 %38 = and i64 %indvars.iv, 63 %39 = lshr i64 %indvars.iv, 6 %40 = shl nuw i64 1, %38 - %41 = and i64 %39, 67108863 - %42 = getelementptr inbounds nuw [2 x [4 x i64]], ptr %1, i64 0, i64 %15, i64 %41 - %43 = load i64, ptr %42, align 8, !tbaa !88 - %44 = or i64 %43, %40 - store i64 %44, ptr %42, align 8, !tbaa !88 - br label %45 - -45: ; preds = %.thread, %37, %4, %7, %10, %13, %24 + %41 = getelementptr inbounds nuw [2 x [4 x i64]], ptr %1, i64 0, i64 %15 + %42 = and i64 %39, 67108863 + %43 = getelementptr inbounds nuw [4 x i64], ptr %41, i64 0, i64 %42 + %44 = load i64, ptr %43, align 8, !tbaa !88 + %45 = or i64 %44, %40 + store i64 %45, ptr %43, align 8, !tbaa !88 + br label %46 + +46: ; preds = %.thread, %37, %4, %7, %10, %13, %24 ret void } diff --git a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll index 7f14f8c250d..0953901cade 100644 --- a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll +++ b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll @@ -3741,9 +3741,9 @@ define hidden { ptr, i64 } @_ZN8anstream7adapter5strip8next_str17h4bd4a530e0bdbd br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i", %.lr.ph.preheader.i.i - %.020.i.i = phi i64 [ %26, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ 0, %.lr.ph.preheader.i.i ] + %.020.i.i = phi i64 [ %27, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ 0, %.lr.ph.preheader.i.i ] %8 = phi ptr [ %10, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ %3, %.lr.ph.preheader.i.i ] - %9 = phi i8 [ %23, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ %.promoted19.i.i, %.lr.ph.preheader.i.i ] + %9 = phi i8 [ %24, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ %.promoted19.i.i, %.lr.ph.preheader.i.i ] %10 = getelementptr inbounds nuw i8, ptr %8, i64 1 %.val14.i.i = load i8, ptr %8, align 1, !noalias !876, !noundef !10 %11 = zext i8 %.val14.i.i to i64 @@ -3754,34 +3754,35 @@ define hidden { ptr, i64 } @_ZN8anstream7adapter5strip8next_str17h4bd4a530e0bdbd 15: ; preds = %.lr.ph.i.i %16 = zext nneg i8 %9 to i64 - %17 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %16, i64 %11 - %18 = load i8, ptr %17, align 1, !noalias !876, !noundef !10 + %17 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %16 + %18 = getelementptr inbounds nuw [256 x i8], ptr %17, i64 0, i64 %11 + %19 = load i8, ptr %18, align 1, !noalias !876, !noundef !10 br label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i: ; preds = %15, %.lr.ph.i.i - %.0.i.i.i.i.i.i = phi i8 [ %18, %15 ], [ %13, %.lr.ph.i.i ] - %19 = and i8 %.0.i.i.i.i.i.i, 15 - %20 = lshr i8 %.0.i.i.i.i.i.i, 4 - %.not.i.i.i.i.i = icmp eq i8 %19, 0 - br i1 %.not.i.i.i.i.i, label %22, label %21 - -21: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i - store i8 %19, ptr %1, align 1, !alias.scope !872, !noalias !873 - br label %22 - -22: ; preds = %21, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i - %23 = phi i8 [ %19, %21 ], [ %9, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i ] - switch i8 %20, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" [ - i8 12, label %24 + %.0.i.i.i.i.i.i = phi i8 [ %19, %15 ], [ %13, %.lr.ph.i.i ] + %20 = and i8 %.0.i.i.i.i.i.i, 15 + %21 = lshr i8 %.0.i.i.i.i.i.i, 4 + %.not.i.i.i.i.i = icmp eq i8 %20, 0 + br i1 %.not.i.i.i.i.i, label %23, label %22 + +22: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i + store i8 %20, ptr %1, align 1, !alias.scope !872, !noalias !873 + br label %23 + +23: ; preds = %22, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i + %24 = phi i8 [ %20, %22 ], [ %9, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i ] + switch i8 %21, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" [ + i8 12, label %25 i8 15, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" - i8 5, label %25 + i8 5, label %26 ] -24: ; preds = %22 +25: ; preds = %23 %.not.i.i.i.i.i.i = icmp eq i8 %.val14.i.i, 127 br i1 %.not.i.i.i.i.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i", label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" -25: ; preds = %22 +26: ; preds = %23 switch i8 %.val14.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" [ i8 9, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" i8 10, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" @@ -3790,64 +3791,64 @@ _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i: ; pre i8 32, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" ] -"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i": ; preds = %25, %24, %22 - %26 = add nuw i64 %.020.i.i, 1 - %27 = icmp eq ptr %10, %6 - br i1 %27, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread", label %.lr.ph.i.i +"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i": ; preds = %26, %25, %23 + %27 = add nuw i64 %.020.i.i, 1 + %28 = icmp eq ptr %10, %6 + br i1 %28, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread", label %.lr.ph.i.i "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread": ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" - %28 = getelementptr inbounds i8, ptr %3, i64 %5 + %29 = getelementptr inbounds i8, ptr %3, i64 %5 store i8 12, ptr %1, align 1 br label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" -"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit": ; preds = %22, %24, %25, %25, %25, %25, %25 +"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit": ; preds = %23, %25, %26, %26, %26, %26, %26 %.not = icmp ugt i64 %.020.i.i, %5 - br i1 %.not, label %29, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" + br i1 %.not, label %30, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" -29: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" +30: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.8a15c8b2664a73ecad88cbf6a449d693.56, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8a15c8b2664a73ecad88cbf6a449d693.58) #40 unreachable "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread": ; preds = %2, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" %switch54 = phi i64 [ %.020.i.i, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" ], [ 0, %2 ] - %30 = getelementptr inbounds i8, ptr %3, i64 %switch54 - %31 = sub nuw i64 %5, %switch54 - store ptr %30, ptr %0, align 8 - store i64 %31, ptr %4, align 8 + %31 = getelementptr inbounds i8, ptr %3, i64 %switch54 + %32 = sub nuw i64 %5, %switch54 + store ptr %31, ptr %0, align 8 + store i64 %32, ptr %4, align 8 store i8 12, ptr %1, align 1 - %32 = icmp eq i64 %switch54, %5 - br i1 %32, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread", label %.lr.ph.i + %33 = icmp eq i64 %switch54, %5 + br i1 %33, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread", label %.lr.ph.i .lr.ph.i: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread", %.backedge.i.i %.0.i1.i = phi i64 [ %.0.be.i.i, %.backedge.i.i ], [ 0, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ] - %33 = phi ptr [ %34, %.backedge.i.i ], [ %30, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ] - %34 = getelementptr inbounds nuw i8, ptr %33, i64 1 - %.val.i.i = load i8, ptr %33, align 1, !noalias !877, !noundef !10 - %35 = zext i8 %.val.i.i to i64 - %36 = getelementptr inbounds nuw [256 x i8], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %35 - %37 = load i8, ptr %36, align 1, !noalias !877, !noundef !10 - %38 = icmp eq i8 %37, 0 - br i1 %38, label %39, label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 - -39: ; preds = %.lr.ph.i - %40 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 12, i64 %35 - %41 = load i8, ptr %40, align 1, !noalias !877, !noundef !10 + %34 = phi ptr [ %35, %.backedge.i.i ], [ %31, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ] + %35 = getelementptr inbounds nuw i8, ptr %34, i64 1 + %.val.i.i = load i8, ptr %34, align 1, !noalias !877, !noundef !10 + %36 = zext i8 %.val.i.i to i64 + %37 = getelementptr inbounds nuw [256 x i8], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %36 + %38 = load i8, ptr %37, align 1, !noalias !877, !noundef !10 + %39 = icmp eq i8 %38, 0 + br i1 %39, label %40, label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 + +40: ; preds = %.lr.ph.i + %41 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 3072), i64 0, i64 %36 + %42 = load i8, ptr %41, align 1, !noalias !877, !noundef !10 br label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 -_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; preds = %39, %.lr.ph.i - %.0.i.i.i.i.i.i47 = phi i8 [ %41, %39 ], [ %37, %.lr.ph.i ] - %42 = lshr i8 %.0.i.i.i.i.i.i47, 4 - switch i8 %42, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" [ - i8 12, label %43 +_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; preds = %40, %.lr.ph.i + %.0.i.i.i.i.i.i47 = phi i8 [ %42, %40 ], [ %38, %.lr.ph.i ] + %43 = lshr i8 %.0.i.i.i.i.i.i47, 4 + switch i8 %43, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" [ + i8 12, label %44 i8 15, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" - i8 5, label %44 + i8 5, label %45 ] -43: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 +44: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 %.not.i.i.i.i.i.i49 = icmp eq i8 %.val.i.i, 127 br i1 %.not.i.i.i.i.i.i49, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit", label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" -44: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 +45: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 switch i8 %.val.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" [ i8 9, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" i8 10, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" @@ -3856,53 +3857,53 @@ _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; p i8 32, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" ] -"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i": ; preds = %44, %44, %44, %44, %44, %43, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 - %45 = add i64 %.0.i1.i, 1 +"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i": ; preds = %45, %45, %45, %45, %45, %44, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 + %46 = add i64 %.0.i1.i, 1 br label %.backedge.i.i -"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i": ; preds = %44, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 +"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i": ; preds = %45, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 %spec.select.i.i.i.i.i = icmp slt i8 %.val.i.i, -64 - %46 = zext i1 %spec.select.i.i.i.i.i to i64 - %spec.select.i.i.i.i = add i64 %.0.i1.i, %46 + %47 = zext i1 %spec.select.i.i.i.i.i to i64 + %spec.select.i.i.i.i = add i64 %.0.i1.i, %47 br i1 %spec.select.i.i.i.i.i, label %.backedge.i.i, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" .backedge.i.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i", %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" - %.0.be.i.i = phi i64 [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ], [ %45, %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" ] - %47 = icmp eq ptr %34, %6 - br i1 %47, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", label %.lr.ph.i + %.0.be.i.i = phi i64 [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ], [ %46, %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" ] + %48 = icmp eq ptr %35, %6 + br i1 %48, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", label %.lr.ph.i -"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit": ; preds = %43, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" - %switch39 = phi i64 [ %.0.i1.i, %43 ], [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ] - %.not38 = icmp ugt i64 %switch39, %31 - br i1 %.not38, label %48, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" +"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit": ; preds = %44, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" + %switch39 = phi i64 [ %.0.i1.i, %44 ], [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ] + %.not38 = icmp ugt i64 %switch39, %32 + br i1 %.not38, label %49, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" -48: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" +49: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.8a15c8b2664a73ecad88cbf6a449d693.56, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8a15c8b2664a73ecad88cbf6a449d693.59) #40 unreachable "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread": ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread", %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" - %.ph59 = phi ptr [ %30, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ], [ %28, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread" ] + %.ph59 = phi ptr [ %31, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ], [ %29, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread" ] store ptr %.ph59, ptr %0, align 8 store i64 0, ptr %4, align 8 - br label %52 + br label %53 "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread": ; preds = %.backedge.i.i, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" - %switch3957 = phi i64 [ %switch39, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" ], [ %31, %.backedge.i.i ] + %switch3957 = phi i64 [ %switch39, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" ], [ %32, %.backedge.i.i ] %switch3957.fr = freeze i64 %switch3957 - %49 = getelementptr inbounds i8, ptr %30, i64 %switch3957.fr - %50 = sub nuw i64 %31, %switch3957.fr - store ptr %49, ptr %0, align 8 - store i64 %50, ptr %4, align 8 - %51 = icmp eq i64 %switch3957.fr, 0 - %spec.select = select i1 %51, ptr null, ptr %30 - br label %52 - -52: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" + %50 = getelementptr inbounds i8, ptr %31, i64 %switch3957.fr + %51 = sub nuw i64 %32, %switch3957.fr + store ptr %50, ptr %0, align 8 + store i64 %51, ptr %4, align 8 + %52 = icmp eq i64 %switch3957.fr, 0 + %spec.select = select i1 %52, ptr null, ptr %31 + br label %53 + +53: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" %switch395762 = phi i64 [ 0, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" ], [ %switch3957.fr, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" ] - %53 = phi ptr [ null, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" ], [ %spec.select, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" ] - %54 = insertvalue { ptr, i64 } poison, ptr %53, 0 - %55 = insertvalue { ptr, i64 } %54, i64 %switch395762, 1 - ret { ptr, i64 } %55 + %54 = phi ptr [ null, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" ], [ %spec.select, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" ] + %55 = insertvalue { ptr, i64 } poison, ptr %54, 0 + %56 = insertvalue { ptr, i64 } %55, i64 %switch395762, 1 + ret { ptr, i64 } %56 } ; Function Attrs: inlinehint nofree norecurse nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable diff --git a/bench/cmake/optimized/nghttp2_hd_huffman.ll b/bench/cmake/optimized/nghttp2_hd_huffman.ll index 2e5f85bf4f2..1c7af631dfb 100644 --- a/bench/cmake/optimized/nghttp2_hd_huffman.ll +++ b/bench/cmake/optimized/nghttp2_hd_huffman.ll @@ -203,59 +203,61 @@ define dso_local i64 @nghttp2_hd_huff_decode(ptr noundef captures(none) %0, ptr %8 = getelementptr inbounds nuw i8, ptr %1, i64 24 br label %9 -9: ; preds = %.lr.ph, %37 - %10 = phi i16 [ %7, %.lr.ph ], [ %31, %37 ] - %.02228 = phi ptr [ %2, %.lr.ph ], [ %11, %37 ] +9: ; preds = %.lr.ph, %39 + %10 = phi i16 [ %7, %.lr.ph ], [ %33, %39 ] + %.02228 = phi ptr [ %2, %.lr.ph ], [ %11, %39 ] %11 = getelementptr inbounds nuw i8, ptr %.02228, i64 1 %12 = load i8, ptr %.02228, align 1, !tbaa !4 %13 = and i16 %10, 511 %14 = zext nneg i16 %13 to i64 - %15 = zext i8 %12 to i32 - %16 = lshr i32 %15, 4 - %17 = zext nneg i32 %16 to i64 - %18 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %14, i64 %17 - %19 = load i16, ptr %18, align 2, !tbaa !29 - %.not25 = icmp sgt i16 %19, -1 - br i1 %.not25, label %25, label %20 - -20: ; preds = %9 - %21 = getelementptr inbounds nuw i8, ptr %18, i64 2 - %22 = load i8, ptr %21, align 2, !tbaa !31 - %23 = load ptr, ptr %8, align 8, !tbaa !32 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 1 - store ptr %24, ptr %8, align 8, !tbaa !32 - store i8 %22, ptr %23, align 1, !tbaa !4 - br label %25 - -25: ; preds = %20, %9 - %26 = and i16 %19, 511 - %27 = zext nneg i16 %26 to i64 - %28 = and i32 %15, 15 - %29 = zext nneg i32 %28 to i64 - %30 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %27, i64 %29 - %31 = load i16, ptr %30, align 2, !tbaa !29 - %.not26 = icmp sgt i16 %31, -1 - br i1 %.not26, label %37, label %32 - -32: ; preds = %25 - %33 = getelementptr inbounds nuw i8, ptr %30, i64 2 - %34 = load i8, ptr %33, align 2, !tbaa !31 - %35 = load ptr, ptr %8, align 8, !tbaa !32 - %36 = getelementptr inbounds nuw i8, ptr %35, i64 1 - store ptr %36, ptr %8, align 8, !tbaa !32 - store i8 %34, ptr %35, align 1, !tbaa !4 - br label %37 - -37: ; preds = %32, %25 + %15 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %14 + %16 = zext i8 %12 to i32 + %17 = lshr i32 %16, 4 + %18 = zext nneg i32 %17 to i64 + %19 = getelementptr inbounds nuw [16 x %struct.nghttp2_huff_decode], ptr %15, i64 0, i64 %18 + %20 = load i16, ptr %19, align 2, !tbaa !29 + %.not25 = icmp sgt i16 %20, -1 + br i1 %.not25, label %26, label %21 + +21: ; preds = %9 + %22 = getelementptr inbounds nuw i8, ptr %19, i64 2 + %23 = load i8, ptr %22, align 2, !tbaa !31 + %24 = load ptr, ptr %8, align 8, !tbaa !32 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 1 + store ptr %25, ptr %8, align 8, !tbaa !32 + store i8 %23, ptr %24, align 1, !tbaa !4 + br label %26 + +26: ; preds = %21, %9 + %27 = and i16 %20, 511 + %28 = zext nneg i16 %27 to i64 + %29 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %28 + %30 = and i32 %16, 15 + %31 = zext nneg i32 %30 to i64 + %32 = getelementptr inbounds nuw [16 x %struct.nghttp2_huff_decode], ptr %29, i64 0, i64 %31 + %33 = load i16, ptr %32, align 2, !tbaa !29 + %.not26 = icmp sgt i16 %33, -1 + br i1 %.not26, label %39, label %34 + +34: ; preds = %26 + %35 = getelementptr inbounds nuw i8, ptr %32, i64 2 + %36 = load i8, ptr %35, align 2, !tbaa !31 + %37 = load ptr, ptr %8, align 8, !tbaa !32 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 1 + store ptr %38, ptr %8, align 8, !tbaa !32 + store i8 %36, ptr %37, align 1, !tbaa !4 + br label %39 + +39: ; preds = %34, %26 %.not = icmp eq ptr %11, %6 br i1 %.not, label %._crit_edge, label %9, !llvm.loop !33 -._crit_edge: ; preds = %37, %5 - %38 = phi i16 [ %7, %5 ], [ %31, %37 ] - store i16 %38, ptr %0, align 2, !tbaa !26 +._crit_edge: ; preds = %39, %5 + %40 = phi i16 [ %7, %5 ], [ %33, %39 ] + store i16 %40, ptr %0, align 2, !tbaa !26 %.not23 = icmp ne i32 %4, 0 - %39 = and i16 %38, 16384 - %.not24 = icmp eq i16 %39, 0 + %41 = and i16 %40, 16384 + %.not24 = icmp eq i16 %41, 0 %or.cond = select i1 %.not23, i1 %.not24, i1 false %.0 = select i1 %or.cond, i64 -523, i64 %3 ret i64 %.0 diff --git a/bench/darktable/optimized/blend.ll b/bench/darktable/optimized/blend.ll index d169477c03f..bb26afa87f5 100644 --- a/bench/darktable/optimized/blend.ll +++ b/bench/darktable/optimized/blend.ll @@ -338,43 +338,47 @@ define range(i32 0, 2) i32 @dt_develop_blendif_init_masking_profile(ptr noundef %21 = getelementptr inbounds nuw i8, ptr %1, i64 960 br label %.preheader33 -.preheader33: ; preds = %18, %22 - %.03037 = phi i64 [ 0, %18 ], [ %23, %22 ] +.preheader33: ; preds = %18, %24 + %.03039 = phi i64 [ 0, %18 ], [ %25, %24 ] + %22 = getelementptr inbounds nuw [4 x [4 x float]], ptr @__const.dt_develop_blendif_init_masking_profile.M, i64 0, i64 %.03039 + %23 = getelementptr inbounds nuw [4 x [4 x float]], ptr %20, i64 0, i64 %.03039 + %invariant.gep36 = getelementptr inbounds nuw [4 x float], ptr %21, i64 0, i64 %.03039 br label %.preheader -.preheader: ; preds = %.preheader33, %24 - %.02936 = phi i64 [ 0, %.preheader33 ], [ %27, %24 ] - br label %28 - -22: ; preds = %24 - %23 = add nuw nsw i64 %.03037, 1 - %exitcond39.not = icmp eq i64 %23, 3 - br i1 %exitcond39.not, label %.loopexit, label %.preheader33 - -24: ; preds = %28 - %25 = getelementptr inbounds nuw [4 x [4 x float]], ptr %20, i64 0, i64 %.03037, i64 %.02936 - store float %34, ptr %25, align 4, !tbaa !31 - %26 = getelementptr inbounds nuw [4 x [4 x float]], ptr %21, i64 0, i64 %.02936, i64 %.03037 - store float %34, ptr %26, align 4, !tbaa !31 - %27 = add nuw nsw i64 %.02936, 1 - %exitcond38.not = icmp eq i64 %27, 3 - br i1 %exitcond38.not, label %22, label %.preheader - -28: ; preds = %.preheader, %28 - %.035 = phi i64 [ 0, %.preheader ], [ %35, %28 ] - %.02834 = phi float [ 0.000000e+00, %.preheader ], [ %34, %28 ] - %29 = getelementptr inbounds nuw [4 x [4 x float]], ptr @__const.dt_develop_blendif_init_masking_profile.M, i64 0, i64 %.03037, i64 %.035 - %30 = load float, ptr %29, align 4, !tbaa !31 - %31 = getelementptr inbounds nuw [4 x [4 x float]], ptr %19, i64 0, i64 %.035, i64 %.02936 - %32 = load float, ptr %31, align 4, !tbaa !31 - %33 = fmul reassoc nsz arcp contract afn float %32, %30 +.preheader: ; preds = %.preheader33, %26 + %.02938 = phi i64 [ 0, %.preheader33 ], [ %28, %26 ] + %invariant.gep = getelementptr inbounds nuw [4 x float], ptr %19, i64 0, i64 %.02938 + br label %29 + +24: ; preds = %26 + %25 = add nuw nsw i64 %.03039, 1 + %exitcond41.not = icmp eq i64 %25, 3 + br i1 %exitcond41.not, label %.loopexit, label %.preheader33 + +26: ; preds = %29 + %27 = getelementptr inbounds nuw [4 x float], ptr %23, i64 0, i64 %.02938 + store float %34, ptr %27, align 4, !tbaa !31 + %gep37 = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep36, i64 0, i64 %.02938 + store float %34, ptr %gep37, align 4, !tbaa !31 + %28 = add nuw nsw i64 %.02938, 1 + %exitcond40.not = icmp eq i64 %28, 3 + br i1 %exitcond40.not, label %24, label %.preheader + +29: ; preds = %.preheader, %29 + %.035 = phi i64 [ 0, %.preheader ], [ %35, %29 ] + %.02834 = phi float [ 0.000000e+00, %.preheader ], [ %34, %29 ] + %30 = getelementptr inbounds nuw [4 x float], ptr %22, i64 0, i64 %.035 + %31 = load float, ptr %30, align 4, !tbaa !31 + %gep = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep, i64 0, i64 %.035 + %32 = load float, ptr %gep, align 4, !tbaa !31 + %33 = fmul reassoc nsz arcp contract afn float %32, %31 %34 = fadd reassoc nsz arcp contract afn float %33, %.02834 %35 = add nuw nsw i64 %.035, 1 %exitcond.not = icmp eq i64 %35, 3 - br i1 %exitcond.not, label %24, label %28 + br i1 %exitcond.not, label %26, label %29 -.loopexit: ; preds = %22, %16 - %.031 = phi i32 [ 0, %16 ], [ 1, %22 ] +.loopexit: ; preds = %24, %16 + %.031 = phi i32 [ 0, %16 ], [ 1, %24 ] ret i32 %.031 } diff --git a/bench/darktable/optimized/colordata.ll b/bench/darktable/optimized/colordata.ll index 12bb3240396..88c9da16ce6 100644 --- a/bench/darktable/optimized/colordata.ll +++ b/bench/darktable/optimized/colordata.ll @@ -856,12 +856,12 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no %36 = add i32 %35, %21 br label %37 -37: ; preds = %33, %95 - %indvars.iv79 = phi i64 [ 0, %33 ], [ %indvars.iv.next80, %95 ] +37: ; preds = %33, %97 + %indvars.iv79 = phi i64 [ 0, %33 ], [ %indvars.iv.next80, %97 ] %38 = getelementptr inbounds nuw [792 x %struct.anon], ptr @_ZZN6LibRaw11adobe_coeffEjPKciE5table, i64 0, i64 %indvars.iv79 %39 = load i32, ptr %38, align 8, !tbaa !75 %40 = icmp eq i32 %39, %1 - br i1 %40, label %41, label %95 + br i1 %40, label %41, label %97 41: ; preds = %37 %42 = getelementptr inbounds nuw i8, ptr %38, i64 8 @@ -873,7 +873,7 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no 45: ; preds = %41 %46 = tail call i32 @strncasecmp(ptr noundef %2, ptr noundef nonnull %43, i64 noundef %44) #10 %.not53 = icmp eq i32 %46, 0 - br i1 %.not53, label %47, label %95 + br i1 %.not53, label %47, label %97 47: ; preds = %45, %41 %48 = getelementptr inbounds nuw i8, ptr %0, i64 532 @@ -939,46 +939,48 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no %.lhs.trunc.us = trunc i64 %indvars.iv87 to i8 %77 = udiv i8 %.lhs.trunc.us, 3 %78 = zext nneg i8 %77 to i64 - %79 = urem i8 %.lhs.trunc.us, 3 - %80 = zext nneg i8 %79 to i64 - %81 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %78, i64 %80 - store float %76, ptr %81, align 4, !tbaa !83 - %82 = fpext reassoc nsz arcp contract afn float %76 to double - %83 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv87 - store double %82, ptr %83, align 8, !tbaa !84 + %79 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %78 + %80 = urem i8 %.lhs.trunc.us, 3 + %81 = zext nneg i8 %80 to i64 + %82 = getelementptr inbounds nuw [3 x float], ptr %79, i64 0, i64 %81 + store float %76, ptr %82, align 4, !tbaa !83 + %83 = fpext reassoc nsz arcp contract afn float %76 to double + %84 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv87 + store double %83, ptr %84, align 8, !tbaa !84 %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1 %exitcond90.not = icmp eq i64 %indvars.iv.next88, 12 - br i1 %exitcond90.not, label %93, label %.split.us, !llvm.loop !85 + br i1 %exitcond90.not, label %95, label %.split.us, !llvm.loop !85 .split: ; preds = %70, %.split %indvars.iv83 = phi i64 [ %indvars.iv.next84, %.split ], [ 0, %70 ] - %84 = getelementptr inbounds nuw [12 x i32], ptr %68, i64 0, i64 %indvars.iv83 - %85 = load i32, ptr %84, align 4, !tbaa !71 - %86 = sitofp i32 %85 to float - %87 = fmul reassoc nsz arcp contract afn float %86, 0x3F1A36E2E0000000 + %85 = getelementptr inbounds nuw [12 x i32], ptr %68, i64 0, i64 %indvars.iv83 + %86 = load i32, ptr %85, align 4, !tbaa !71 + %87 = sitofp i32 %86 to float + %88 = fmul reassoc nsz arcp contract afn float %87, 0x3F1A36E2E0000000 %.lhs.trunc64 = trunc i64 %indvars.iv83 to i8 - %88 = udiv i8 %.lhs.trunc64, 3 - %89 = zext nneg i8 %88 to i64 - %90 = urem i8 %.lhs.trunc64, 3 - %91 = zext nneg i8 %90 to i64 - %92 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %89, i64 %91 - store float %87, ptr %92, align 4, !tbaa !83 + %89 = udiv i8 %.lhs.trunc64, 3 + %90 = zext nneg i8 %89 to i64 + %91 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %90 + %92 = urem i8 %.lhs.trunc64, 3 + %93 = zext nneg i8 %92 to i64 + %94 = getelementptr inbounds nuw [3 x float], ptr %91, i64 0, i64 %93 + store float %88, ptr %94, align 4, !tbaa !83 %indvars.iv.next84 = add nuw nsw i64 %indvars.iv83, 1 %exitcond86.not = icmp eq i64 %indvars.iv.next84, 12 br i1 %exitcond86.not, label %.critedge61, label %.split, !llvm.loop !85 -93: ; preds = %.split.us - %94 = getelementptr inbounds nuw i8, ptr %0, i64 153304 - call void @_ZN6LibRaw13cam_xyz_coeffEPA4_fPA3_d(ptr noundef nonnull align 8 dereferenceable(767680) %0, ptr noundef nonnull %94, ptr noundef nonnull %5) +95: ; preds = %.split.us + %96 = getelementptr inbounds nuw i8, ptr %0, i64 153304 + call void @_ZN6LibRaw13cam_xyz_coeffEPA4_fPA3_d(ptr noundef nonnull align 8 dereferenceable(767680) %0, ptr noundef nonnull %96, ptr noundef nonnull %5) br label %.critedge61 -95: ; preds = %45, %37 +97: ; preds = %45, %37 %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 %exitcond82.not = icmp eq i64 %indvars.iv.next80, 792 br i1 %exitcond82.not, label %.critedge61, label %37, !llvm.loop !86 -.critedge61: ; preds = %95, %.split, %67, %93, %4 - %.0 = phi i32 [ 1, %4 ], [ 1, %67 ], [ 1, %93 ], [ 1, %.split ], [ 0, %95 ] +.critedge61: ; preds = %97, %.split, %67, %95, %4 + %.0 = phi i32 [ 1, %4 ], [ 1, %67 ], [ 1, %95 ], [ 1, %.split ], [ 0, %97 ] call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #9 ret i32 %.0 } diff --git a/bench/darktable/optimized/exif_gps.ll b/bench/darktable/optimized/exif_gps.ll index d64bd208cde..61bf74fa4d9 100644 --- a/bench/darktable/optimized/exif_gps.ll +++ b/bench/darktable/optimized/exif_gps.ll @@ -814,28 +814,30 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl .preheader129: ; preds = %356, %.loopexit %indvars.iv158 = phi i64 [ %indvars.iv.next159, %.loopexit ], [ 0, %356 ] %.061141 = phi ptr [ %370, %.loopexit ], [ %362, %356 ] - br label %363 + %363 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv158 + %invariant.gep = getelementptr inbounds nuw [4 x float], ptr %55, i64 0, i64 %indvars.iv158 + br label %364 -363: ; preds = %.preheader129, %371 +364: ; preds = %.preheader129, %371 %indvars.iv = phi i64 [ 0, %.preheader129 ], [ %indvars.iv.next, %371 ] %.059139 = phi float [ 0.000000e+00, %.preheader129 ], [ %372, %371 ] %.1138 = phi ptr [ %.061141, %.preheader129 ], [ %370, %371 ] - %364 = call i64 @strtol(ptr noundef nonnull captures(none) %.1138, ptr noundef null, i32 noundef 10) #10 - %365 = trunc i64 %364 to i32 - %366 = sitofp i32 %365 to float - %367 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv158, i64 %indvars.iv - store float %366, ptr %367, align 4, !tbaa !111 - %368 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv, i64 %indvars.iv158 - %369 = load float, ptr %368, align 4, !tbaa !111 + %365 = call i64 @strtol(ptr noundef nonnull captures(none) %.1138, ptr noundef null, i32 noundef 10) #10 + %366 = trunc i64 %365 to i32 + %367 = sitofp i32 %366 to float + %368 = getelementptr inbounds nuw [4 x float], ptr %363, i64 0, i64 %indvars.iv + store float %367, ptr %368, align 4, !tbaa !111 + %gep = getelementptr inbounds nuw [3 x [4 x float]], ptr %invariant.gep, i64 0, i64 %indvars.iv + %369 = load float, ptr %gep, align 4, !tbaa !111 %370 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.19, ptr noundef nonnull %9) #10 %.not98 = icmp eq ptr %370, null br i1 %.not98, label %.sink.split, label %371 -371: ; preds = %363 +371: ; preds = %364 %372 = fadd reassoc nsz arcp contract afn float %369, %.059139 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %373, label %363, !llvm.loop !113 + br i1 %exitcond.not, label %373, label %364, !llvm.loop !113 373: ; preds = %371 %374 = fpext reassoc nsz arcp contract afn float %372 to double @@ -848,7 +850,7 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl .preheader: ; preds = %.preheader.preheader, %.preheader %indvars.iv154 = phi i64 [ %indvars.iv.next155, %.preheader ], [ 0, %.preheader.preheader ] - %377 = getelementptr inbounds nuw [3 x [4 x float]], ptr %55, i64 0, i64 %indvars.iv158, i64 %indvars.iv154 + %377 = getelementptr inbounds nuw [4 x float], ptr %363, i64 0, i64 %indvars.iv154 %378 = load float, ptr %377, align 4, !tbaa !111 %379 = fmul reassoc nsz arcp contract afn float %378, %376 store float %379, ptr %377, align 4, !tbaa !111 @@ -861,7 +863,7 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl %exitcond161.not = icmp eq i64 %indvars.iv.next159, 3 br i1 %exitcond161.not, label %.sink.split, label %.preheader129, !llvm.loop !115 -.sink.split: ; preds = %.loopexit, %363, %356 +.sink.split: ; preds = %.loopexit, %364, %356 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10 br label %380 diff --git a/bench/darktable/optimized/identify_tools.ll b/bench/darktable/optimized/identify_tools.ll index 790ed271b37..16e0e6abb27 100644 --- a/bench/darktable/optimized/identify_tools.ll +++ b/bench/darktable/optimized/identify_tools.ll @@ -45,7 +45,7 @@ define noundef signext range(i16 18761, 19790) i16 @_ZN6LibRaw16guess_byte_order %23 = phi i1 [ true, %.lr.ph ], [ false, %22 ] %indvars.iv.sroa.phi = phi ptr [ %.sroa.0, %.lr.ph ], [ %.sroa.5, %22 ] %indvars.iv = phi i64 [ 0, %.lr.ph ], [ 1, %22 ] - %24 = getelementptr inbounds nuw [4 x [2 x i8]], ptr %3, i64 0, i64 %20, i64 %indvars.iv + %24 = getelementptr inbounds nuw [2 x i8], ptr %21, i64 0, i64 %indvars.iv %25 = load i8, ptr %24, align 1, !tbaa !73 %26 = zext i8 %25 to i32 %27 = shl nuw nsw i32 %26, 8 @@ -54,7 +54,7 @@ define noundef signext range(i16 18761, 19790) i16 @_ZN6LibRaw16guess_byte_order %28 = load i8, ptr %.sroa.sel, align 1, !tbaa !73 %29 = zext i8 %28 to i32 %30 = or disjoint i32 %27, %29 - %31 = getelementptr inbounds nuw [4 x [2 x i8]], ptr %3, i64 0, i64 %13, i64 %indvars.iv + %31 = getelementptr inbounds nuw [2 x i8], ptr %14, i64 0, i64 %indvars.iv %32 = load i8, ptr %31, align 1, !tbaa !73 %33 = zext i8 %32 to i32 %34 = shl nuw nsw i32 %33, 8 @@ -112,6 +112,8 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %8 = getelementptr inbounds nuw i8, ptr %0, i64 22 %9 = load i16, ptr %8, align 2, !tbaa !78 %10 = icmp ugt i16 %9, 2064 + %indvars.iv81.sroa.gep = getelementptr inbounds nuw i8, ptr %6, i64 4128 + %indvars.iv87.sroa.gep = getelementptr inbounds nuw i8, ptr %6, i64 4128 br i1 %10, label %._crit_edge.thread, label %.preheader54 .preheader54: ; preds = %5 @@ -124,7 +126,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a .preheader54.split.us: ; preds = %.preheader54, %._crit_edge.split.us.us %.not.us = phi i1 [ false, %._crit_edge.split.us.us ], [ true, %.preheader54 ] - %indvars.iv87 = phi i64 [ 1, %._crit_edge.split.us.us ], [ 0, %.preheader54 ] + %indvars.iv87.sroa.phi = phi ptr [ %indvars.iv87.sroa.gep, %._crit_edge.split.us.us ], [ %6, %.preheader54 ] %.04870.us = phi i64 [ %.149.lcssa.us, %._crit_edge.split.us.us ], [ 0, %.preheader54 ] %16 = load ptr, ptr %11, align 8, !tbaa !6 %17 = select i1 %.not.us, i32 %3, i32 %4 @@ -164,7 +166,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %31 = shl i64 %.2.lcssa.us.us, %30 %32 = lshr i64 %31, %15 %33 = trunc i64 %32 to i16 - %34 = getelementptr inbounds nuw [2 x [2064 x i16]], ptr %6, i64 0, i64 %indvars.iv87, i64 %indvars.iv84 + %34 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv87.sroa.phi, i64 0, i64 %indvars.iv84 store i16 %33, ptr %34, align 2, !tbaa !80 %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 %35 = zext i16 %28 to i64 @@ -252,7 +254,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a .preheader54.split: ; preds = %.preheader54, %._crit_edge.split %.not = phi i1 [ false, %._crit_edge.split ], [ true, %.preheader54 ] - %indvars.iv81 = phi i64 [ 1, %._crit_edge.split ], [ 0, %.preheader54 ] + %indvars.iv81.sroa.phi = phi ptr [ %indvars.iv81.sroa.gep, %._crit_edge.split ], [ %6, %.preheader54 ] %.04870 = phi i64 [ %.149.lcssa, %._crit_edge.split ], [ 0, %.preheader54 ] %81 = load ptr, ptr %11, align 8, !tbaa !6 %82 = select i1 %.not, i32 %3, i32 %4 @@ -293,7 +295,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %97 = shl i64 %.2.lcssa, %96 %98 = lshr i64 %97, %15 %99 = trunc i64 %98 to i16 - %100 = getelementptr inbounds nuw [2 x [2064 x i16]], ptr %6, i64 0, i64 %indvars.iv81, i64 %indvars.iv + %100 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv81.sroa.phi, i64 0, i64 %indvars.iv store i16 %99, ptr %100, align 2, !tbaa !80 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count diff --git a/bench/darktable/optimized/libraw_c_api.ll b/bench/darktable/optimized/libraw_c_api.ll index e59d4fdf6ac..c425d1de104 100644 --- a/bench/darktable/optimized/libraw_c_api.ll +++ b/bench/darktable/optimized/libraw_c_api.ll @@ -972,22 +972,23 @@ define float @libraw_get_pre_mul(ptr noundef readonly captures(address_is_null) ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define float @libraw_get_rgb_cam(ptr noundef readonly captures(address_is_null) %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #8 { %.not = icmp eq ptr %0, null - br i1 %.not, label %14, label %4 + br i1 %.not, label %15, label %4 4: ; preds = %3 %5 = getelementptr inbounds nuw i8, ptr %0, i64 153296 %6 = tail call i32 @llvm.smax.i32(i32 %1, i32 0) %7 = tail call i32 @llvm.umin.i32(i32 %6, i32 2) %8 = zext nneg i32 %7 to i64 - %9 = tail call i32 @llvm.smax.i32(i32 %2, i32 0) - %10 = tail call i32 @llvm.umin.i32(i32 %9, i32 3) - %11 = zext nneg i32 %10 to i64 - %12 = getelementptr inbounds nuw [3 x [4 x float]], ptr %5, i64 0, i64 %8, i64 %11 - %13 = load float, ptr %12, align 4, !tbaa !88 - br label %14 + %9 = getelementptr inbounds nuw [3 x [4 x float]], ptr %5, i64 0, i64 %8 + %10 = tail call i32 @llvm.smax.i32(i32 %2, i32 0) + %11 = tail call i32 @llvm.umin.i32(i32 %10, i32 3) + %12 = zext nneg i32 %11 to i64 + %13 = getelementptr inbounds nuw [4 x float], ptr %9, i64 0, i64 %12 + %14 = load float, ptr %13, align 4, !tbaa !88 + br label %15 -14: ; preds = %3, %4 - %.0 = phi nsz float [ %13, %4 ], [ 2.200000e+01, %3 ] +15: ; preds = %3, %4 + %.0 = phi nsz float [ %14, %4 ], [ 2.200000e+01, %3 ] ret float %.0 } diff --git a/bench/duckdb/optimized/aria.ll b/bench/duckdb/optimized/aria.ll index 144af4a949e..e8f7589753e 100644 --- a/bench/duckdb/optimized/aria.ll +++ b/bench/duckdb/optimized/aria.ll @@ -666,95 +666,97 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture %8 = zext i8 %6 to i64 br label %.preheader40 -.preheader40: ; preds = %.preheader40.lr.ph, %15 - %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %15 ] - %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %15 ] - br label %10 +.preheader40: ; preds = %.preheader40.lr.ph, %17 + %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %17 ] + %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %17 ] + %9 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47 + %10 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49 + br label %12 -.preheader: ; preds = %15 +.preheader: ; preds = %17 %.not58 = icmp eq i8 %6, 1 br i1 %.not58, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %.preheader - %9 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 4 %wide.trip.count = zext i8 %6 to i64 - br label %17 + br label %19 -10: ; preds = %.preheader40, %10 - %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %10 ] - %11 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47, i64 %indvars.iv - %12 = load i32, ptr %11, align 4, !tbaa !3 - %13 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49, i64 %indvars.iv +12: ; preds = %.preheader40, %12 + %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %12 ] + %13 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv %14 = load i32, ptr %13, align 4, !tbaa !3 - store i32 %14, ptr %11, align 4, !tbaa !3 - store i32 %12, ptr %13, align 4, !tbaa !3 + %15 = getelementptr inbounds nuw [4 x i32], ptr %10, i64 0, i64 %indvars.iv + %16 = load i32, ptr %15, align 4, !tbaa !3 + store i32 %16, ptr %13, align 4, !tbaa !3 + store i32 %14, ptr %15, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %15, label %10, !llvm.loop !13 + br i1 %exitcond.not, label %17, label %12, !llvm.loop !13 -15: ; preds = %10 +17: ; preds = %12 %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 %indvars.iv.next50 = add nsw i64 %indvars.iv49, -1 - %16 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 - br i1 %16, label %.preheader40, label %.preheader, !llvm.loop !14 + %18 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 + br i1 %18, label %.preheader40, label %.preheader, !llvm.loop !14 -17: ; preds = %.lr.ph, %17 - %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %17 ] - %18 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv54 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 4 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %21 = getelementptr inbounds nuw i8, ptr %18, i64 12 - %22 = load i32, ptr %19, align 4, !tbaa !3 - %23 = load i32, ptr %18, align 4, !tbaa !3 - %24 = tail call i32 @llvm.fshl.i32(i32 %22, i32 %22, i32 16) - %25 = load i32, ptr %21, align 4, !tbaa !3 - %26 = load i32, ptr %20, align 4, !tbaa !3 - %27 = lshr i32 %26, 8 - %28 = and i32 %27, 16711935 - %29 = shl i32 %26, 8 - %30 = and i32 %29, -16711936 - %31 = or disjoint i32 %28, %30 - %32 = tail call i32 @llvm.bswap.i32(i32 %25) - %33 = xor i32 %31, %22 - %34 = tail call i32 @llvm.fshl.i32(i32 %23, i32 %23, i32 16) - %35 = lshr i32 %33, 8 - %36 = and i32 %35, 16711935 - %37 = shl i32 %33, 8 - %38 = and i32 %37, -16711936 - %39 = or disjoint i32 %36, %38 - %40 = xor i32 %34, %39 - %41 = xor i32 %40, %32 - %42 = xor i32 %31, %25 - %43 = tail call i32 @llvm.fshl.i32(i32 %42, i32 %42, i32 16) - %44 = tail call i32 @llvm.bswap.i32(i32 %22) - %45 = xor i32 %34, %44 - %46 = xor i32 %43, %23 - %47 = xor i32 %46, %41 - store i32 %47, ptr %19, align 4, !tbaa !3 - %48 = tail call i32 @llvm.fshl.i32(i32 %43, i32 %43, i32 16) - %49 = xor i32 %41, %48 - %50 = lshr i32 %49, 8 - %51 = and i32 %50, 16711935 - %52 = shl i32 %49, 8 - %53 = and i32 %52, -16711936 - %54 = or disjoint i32 %51, %53 - %55 = xor i32 %54, %24 - store i32 %55, ptr %18, align 4, !tbaa !3 - %56 = tail call i32 @llvm.fshl.i32(i32 %41, i32 %41, i32 16) - %57 = tail call i32 @llvm.bswap.i32(i32 %41) - %58 = xor i32 %45, %57 - %59 = xor i32 %58, %31 - store i32 %59, ptr %21, align 4, !tbaa !3 - %60 = tail call i32 @llvm.bswap.i32(i32 %45) - %61 = xor i32 %60, %56 - %62 = xor i32 %61, %32 - store i32 %62, ptr %20, align 4, !tbaa !3 +19: ; preds = %.lr.ph, %19 + %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %19 ] + %20 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %11, i64 0, i64 %indvars.iv54 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 4 + %22 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %23 = getelementptr inbounds nuw i8, ptr %20, i64 12 + %24 = load i32, ptr %21, align 4, !tbaa !3 + %25 = load i32, ptr %20, align 4, !tbaa !3 + %26 = tail call i32 @llvm.fshl.i32(i32 %24, i32 %24, i32 16) + %27 = load i32, ptr %23, align 4, !tbaa !3 + %28 = load i32, ptr %22, align 4, !tbaa !3 + %29 = lshr i32 %28, 8 + %30 = and i32 %29, 16711935 + %31 = shl i32 %28, 8 + %32 = and i32 %31, -16711936 + %33 = or disjoint i32 %30, %32 + %34 = tail call i32 @llvm.bswap.i32(i32 %27) + %35 = xor i32 %33, %24 + %36 = tail call i32 @llvm.fshl.i32(i32 %25, i32 %25, i32 16) + %37 = lshr i32 %35, 8 + %38 = and i32 %37, 16711935 + %39 = shl i32 %35, 8 + %40 = and i32 %39, -16711936 + %41 = or disjoint i32 %38, %40 + %42 = xor i32 %36, %41 + %43 = xor i32 %42, %34 + %44 = xor i32 %33, %27 + %45 = tail call i32 @llvm.fshl.i32(i32 %44, i32 %44, i32 16) + %46 = tail call i32 @llvm.bswap.i32(i32 %24) + %47 = xor i32 %36, %46 + %48 = xor i32 %45, %25 + %49 = xor i32 %48, %43 + store i32 %49, ptr %21, align 4, !tbaa !3 + %50 = tail call i32 @llvm.fshl.i32(i32 %45, i32 %45, i32 16) + %51 = xor i32 %43, %50 + %52 = lshr i32 %51, 8 + %53 = and i32 %52, 16711935 + %54 = shl i32 %51, 8 + %55 = and i32 %54, -16711936 + %56 = or disjoint i32 %53, %55 + %57 = xor i32 %56, %26 + store i32 %57, ptr %20, align 4, !tbaa !3 + %58 = tail call i32 @llvm.fshl.i32(i32 %43, i32 %43, i32 16) + %59 = tail call i32 @llvm.bswap.i32(i32 %43) + %60 = xor i32 %47, %59 + %61 = xor i32 %60, %33 + store i32 %61, ptr %23, align 4, !tbaa !3 + %62 = tail call i32 @llvm.bswap.i32(i32 %47) + %63 = xor i32 %62, %58 + %64 = xor i32 %63, %34 + store i32 %64, ptr %22, align 4, !tbaa !3 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 %exitcond57.not = icmp eq i64 %indvars.iv.next55, %wide.trip.count - br i1 %exitcond57.not, label %.loopexit, label %17, !llvm.loop !15 + br i1 %exitcond57.not, label %.loopexit, label %19, !llvm.loop !15 -.loopexit: ; preds = %17, %5, %.preheader, %3 - %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %17 ] +.loopexit: ; preds = %19, %5, %.preheader, %3 + %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %19 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/aptxdec.ll b/bench/ffmpeg/optimized/aptxdec.ll index ea234dfafea..6062d220545 100644 --- a/bench/ffmpeg/optimized/aptxdec.ll +++ b/bench/ffmpeg/optimized/aptxdec.ll @@ -45,6 +45,7 @@ define internal range(i32 -2147483648, 536870912) i32 @aptx_decode_frame(ptr nou %15 = load i32, ptr %14, align 4, !tbaa !29 %16 = icmp slt i32 %13, %15 %indvars.iv52.i.sroa.gep41 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %indvars.iv59.sroa.gep = getelementptr inbounds nuw i8, ptr %9, i64 16 br i1 %16, label %17, label %18 17: ; preds = %4 @@ -434,13 +435,14 @@ aptx_decode_samples.exit: ; preds = %aptx_decode_channel .preheader: ; preds = %aptx_decode_samples.exit, %241 %231 = phi i1 [ false, %241 ], [ true, %aptx_decode_samples.exit ] + %indvars.iv59.sroa.phi = phi ptr [ %indvars.iv59.sroa.gep, %241 ], [ %9, %aptx_decode_samples.exit ] %indvars.iv59 = phi i64 [ 1, %241 ], [ 0, %aptx_decode_samples.exit ] %232 = getelementptr inbounds nuw [8 x ptr], ptr %1, i64 0, i64 %indvars.iv59 br label %233 233: ; preds = %.preheader, %233 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %233 ] - %234 = getelementptr inbounds nuw [2 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv59, i64 %indvars.iv + %234 = getelementptr inbounds nuw [4 x i32], ptr %indvars.iv59.sroa.phi, i64 0, i64 %indvars.iv %235 = load i32, ptr %234, align 4, !tbaa !49 %236 = shl nsw i32 %235, 8 %237 = load ptr, ptr %232, align 8, !tbaa !60 diff --git a/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll b/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll index 6bc1eca81da..7e3b631da93 100644 --- a/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll +++ b/bench/ffmpeg/optimized/msmpeg4_vc1_data.ll @@ -31,14 +31,20 @@ define internal void @msmp4_vc1_vlcs_init() #0 { %0 = alloca %struct.VLCInitState, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %0) #4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) @__const.msmp4_vc1_vlcs_init.state, i64 16, i1 false) - %1 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 4), i32 noundef 8, i32 noundef 4, ptr noundef nonnull @ff_msmp4_dc_tables, i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %1, ptr @ff_msmp4_dc_vlc, align 16, !tbaa !4 - %2 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 964), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 960), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %2, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 8), align 8, !tbaa !4 - %3 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1924), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1920), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %3, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 16), align 16, !tbaa !4 - %4 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2884), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2880), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 - store ptr %4, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 24), align 8, !tbaa !4 + %1 = getelementptr inbounds nuw [2 x [2 x [120 x [2 x i32]]]], ptr @ff_msmp4_dc_tables, i64 0, i64 0 + %2 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @ff_msmp4_dc_vlc, i64 0, i64 0 + %3 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %4 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull %3, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %1, i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + store ptr %4, ptr %2, align 16, !tbaa !4 + %5 = getelementptr inbounds nuw i8, ptr %1, i64 960 + %6 = getelementptr inbounds nuw i8, ptr %1, i64 964 + %7 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull %6, i32 noundef 8, i32 noundef 4, ptr noundef nonnull %5, i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store ptr %7, ptr %8, align 8, !tbaa !4 + %9 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1924), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 1920), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + store ptr %9, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 16), align 16, !tbaa !4 + %10 = call ptr @ff_vlc_init_tables_sparse(ptr noundef nonnull %0, i32 noundef 9, i32 noundef 120, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2884), i32 noundef 8, i32 noundef 4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_tables, i64 2880), i32 noundef 8, i32 noundef 4, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 + store ptr %10, ptr getelementptr inbounds nuw (i8, ptr @ff_msmp4_dc_vlc, i64 24), align 8, !tbaa !4 call void @ff_vlc_init_table_sparse(ptr noundef nonnull @ff_msmp4_mb_i_vlc, i32 noundef 536, i32 noundef 9, i32 noundef 64, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_msmp4_mb_i_table, i64 2), i32 noundef 4, i32 noundef 2, ptr noundef nonnull @ff_msmp4_mb_i_table, i32 noundef 4, i32 noundef 2, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) #4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %0) #4 ret void diff --git a/bench/ffmpeg/optimized/pafvideo.ll b/bench/ffmpeg/optimized/pafvideo.ll index 94083e206c8..94d7e3f7025 100644 --- a/bench/ffmpeg/optimized/pafvideo.ll +++ b/bench/ffmpeg/optimized/pafvideo.ll @@ -937,20 +937,17 @@ bytestream2_get_le16.exit171: ; preds = %191 %.3132 = add nuw nsw i32 %.1130242, %242 %.0114.in = select i1 %.not157, i8 %241, i8 %240 %243 = zext nneg i8 %.0114.in to i64 - %.not158231 = icmp eq i8 %.0114.in, 0 - br i1 %.not158231, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %235 - %244 = getelementptr inbounds nuw [16 x [8 x i8]], ptr @block_sequences, i64 0, i64 %243, i64 0 + %244 = getelementptr inbounds nuw [16 x [8 x i8]], ptr @block_sequences, i64 0, i64 %243 %245 = load i8, ptr %244, align 8, !tbaa !47 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %copy_color_mask.exit - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %copy_color_mask.exit ] - %246 = phi i8 [ %245, %.lr.ph.preheader ], [ %356, %copy_color_mask.exit ] - %.3141234 = phi i8 [ %.1139240, %.lr.ph.preheader ], [ %.4142, %copy_color_mask.exit ] - %.3186233 = phi ptr [ %.1239, %.lr.ph.preheader ], [ %.4, %copy_color_mask.exit ] - %.3190232 = phi ptr [ %.1188238, %.lr.ph.preheader ], [ %.4191, %copy_color_mask.exit ] + %.not158231 = icmp eq i8 %245, 0 + br i1 %.not158231, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %235, %copy_color_mask.exit + %indvars.iv = phi i64 [ %indvars.iv.next, %copy_color_mask.exit ], [ 0, %235 ] + %246 = phi i8 [ %356, %copy_color_mask.exit ], [ %245, %235 ] + %.3141234 = phi i8 [ %.4142, %copy_color_mask.exit ], [ %.1139240, %235 ] + %.3186233 = phi ptr [ %.4, %copy_color_mask.exit ], [ %.1239, %235 ] + %.3190232 = phi ptr [ %.4191, %copy_color_mask.exit ], [ %.1188238, %235 ] %247 = load i32, ptr %127, align 8, !tbaa !28 %248 = shl nsw i32 %247, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -1171,7 +1168,7 @@ copy_color_mask.exit: ; preds = %354, %285, %.lr.ph %.4191 = phi ptr [ %.3190232, %.lr.ph ], [ %.3190232, %285 ], [ %.5192, %354 ] %.4 = phi ptr [ %.3186233, %.lr.ph ], [ %.3186233, %285 ], [ %.5, %354 ] %.4142 = phi i8 [ %.3141234, %.lr.ph ], [ %.5143, %285 ], [ %.3141234, %354 ] - %355 = getelementptr inbounds nuw [16 x [8 x i8]], ptr @block_sequences, i64 0, i64 %243, i64 %indvars.iv.next + %355 = getelementptr inbounds nuw [8 x i8], ptr %244, i64 0, i64 %indvars.iv.next %356 = load i8, ptr %355, align 1, !tbaa !47 %.not158 = icmp eq i8 %356, 0 br i1 %.not158, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !69 diff --git a/bench/ffmpeg/optimized/vf_fftdnoiz.ll b/bench/ffmpeg/optimized/vf_fftdnoiz.ll index 082d4e017d0..8c30e17957b 100644 --- a/bench/ffmpeg/optimized/vf_fftdnoiz.ll +++ b/bench/ffmpeg/optimized/vf_fftdnoiz.ll @@ -1504,20 +1504,21 @@ generate_window_func.exit: ; preds = %600, %580, %578, %5 %indvars.iv263 = phi i64 [ %indvars.iv.next264, %._crit_edge224.us ], [ 0, %.preheader.lr.ph ] %616 = getelementptr inbounds nuw [257 x float], ptr %2, i64 0, i64 %indvars.iv263 %617 = load float, ptr %616, align 4, !tbaa !68 - br label %618 - -618: ; preds = %.preheader.us, %618 - %indvars.iv260 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next261, %618 ] - %619 = getelementptr inbounds nuw [257 x float], ptr %2, i64 0, i64 %indvars.iv260 - %620 = load float, ptr %619, align 4, !tbaa !68 - %621 = fmul nsz float %617, %620 - %622 = getelementptr inbounds nuw [256 x [256 x float]], ptr %615, i64 0, i64 %indvars.iv263, i64 %indvars.iv260 - store float %621, ptr %622, align 4, !tbaa !68 + %618 = getelementptr inbounds nuw [256 x [256 x float]], ptr %615, i64 0, i64 %indvars.iv263 + br label %619 + +619: ; preds = %.preheader.us, %619 + %indvars.iv260 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next261, %619 ] + %620 = getelementptr inbounds nuw [257 x float], ptr %2, i64 0, i64 %indvars.iv260 + %621 = load float, ptr %620, align 4, !tbaa !68 + %622 = fmul nsz float %617, %621 + %623 = getelementptr inbounds nuw [256 x float], ptr %618, i64 0, i64 %indvars.iv260 + store float %622, ptr %623, align 4, !tbaa !68 %indvars.iv.next261 = add nuw nsw i64 %indvars.iv260, 1 %exitcond.not = icmp eq i64 %indvars.iv.next261, %wide.trip.count266 - br i1 %exitcond.not, label %._crit_edge224.us, label %618, !llvm.loop !106 + br i1 %exitcond.not, label %._crit_edge224.us, label %619, !llvm.loop !106 -._crit_edge224.us: ; preds = %618 +._crit_edge224.us: ; preds = %619 %indvars.iv.next264 = add nuw nsw i64 %indvars.iv263, 1 %exitcond267.not = icmp eq i64 %indvars.iv.next264, %wide.trip.count266 br i1 %exitcond267.not, label %.thread184, label %.preheader.us, !llvm.loop !107 diff --git a/bench/flac/optimized/lpc.ll b/bench/flac/optimized/lpc.ll index 8b482abc144..8001d0aa2c3 100644 --- a/bench/flac/optimized/lpc.ll +++ b/bench/flac/optimized/lpc.ll @@ -537,10 +537,10 @@ define hidden void @FLAC__lpc_compute_lp_coefficients(ptr noundef readonly captu %wide.trip.count80 = zext i32 %7 to i64 br label %8 -8: ; preds = %49, %4 - %indvars.iv77 = phi i64 [ %indvars.iv.next78, %49 ], [ 0, %4 ] - %indvars.iv73 = phi i32 [ %indvars.iv.next74, %49 ], [ 1, %4 ] - %.049 = phi nsz double [ %52, %49 ], [ %6, %4 ] +8: ; preds = %50, %4 + %indvars.iv77 = phi i64 [ %indvars.iv.next78, %50 ], [ 0, %4 ] + %indvars.iv73 = phi i32 [ %indvars.iv.next74, %50 ], [ 1, %4 ] + %.049 = phi nsz double [ %53, %50 ], [ %6, %4 ] %umax = tail call i32 @llvm.umax.i32(i32 %indvars.iv73, i32 1) %exitcond81.not = icmp eq i64 %indvars.iv77, %wide.trip.count80 br i1 %exitcond81.not, label %.loopexit, label %9 @@ -618,37 +618,38 @@ define hidden void @FLAC__lpc_compute_lp_coefficients(ptr noundef readonly captu 41: ; preds = %._crit_edge59.thread, %._crit_edge59.thread86, %._crit_edge59 %42 = phi double [ %13, %._crit_edge59.thread ], [ %22, %._crit_edge59.thread86 ], [ %22, %._crit_edge59 ] + %43 = getelementptr inbounds nuw [32 x float], ptr %2, i64 %indvars.iv77 %wide.trip.count75 = zext i32 %umax to i64 - br label %43 - -43: ; preds = %41, %43 - %indvars.iv70 = phi i64 [ 0, %41 ], [ %indvars.iv.next71, %43 ] - %44 = getelementptr inbounds nuw [32 x double], ptr %5, i64 0, i64 %indvars.iv70 - %45 = load double, ptr %44, align 8, !tbaa !18 - %46 = fptrunc reassoc nsz arcp double %45 to float - %47 = fneg reassoc nsz arcp float %46 - %48 = getelementptr inbounds nuw [32 x float], ptr %2, i64 %indvars.iv77, i64 %indvars.iv70 - store float %47, ptr %48, align 4, !tbaa !7 + br label %44 + +44: ; preds = %41, %44 + %indvars.iv70 = phi i64 [ 0, %41 ], [ %indvars.iv.next71, %44 ] + %45 = getelementptr inbounds nuw [32 x double], ptr %5, i64 0, i64 %indvars.iv70 + %46 = load double, ptr %45, align 8, !tbaa !18 + %47 = fptrunc reassoc nsz arcp double %46 to float + %48 = fneg reassoc nsz arcp float %47 + %49 = getelementptr inbounds nuw [32 x float], ptr %43, i64 0, i64 %indvars.iv70 + store float %48, ptr %49, align 4, !tbaa !7 %indvars.iv.next71 = add nuw nsw i64 %indvars.iv70, 1 %exitcond76 = icmp eq i64 %indvars.iv.next71, %wide.trip.count75 - br i1 %exitcond76, label %49, label %43, !llvm.loop !38 - -49: ; preds = %43 - %50 = fneg reassoc nsz arcp double %42 - %51 = tail call reassoc nsz arcp double @llvm.fmuladd.f64(double %50, double %42, double 1.000000e+00) - %52 = fmul reassoc nsz arcp double %51, %.049 - %53 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv77 - store double %52, ptr %53, align 8, !tbaa !18 - %54 = fcmp reassoc nsz arcp oeq double %52, 0.000000e+00 + br i1 %exitcond76, label %50, label %44, !llvm.loop !38 + +50: ; preds = %44 + %51 = fneg reassoc nsz arcp double %42 + %52 = tail call reassoc nsz arcp double @llvm.fmuladd.f64(double %51, double %42, double 1.000000e+00) + %53 = fmul reassoc nsz arcp double %52, %.049 + %54 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv77 + store double %53, ptr %54, align 8, !tbaa !18 + %55 = fcmp reassoc nsz arcp oeq double %53, 0.000000e+00 %indvars.iv.next74 = add i32 %indvars.iv73, 1 - br i1 %54, label %55, label %8, !llvm.loop !39 + br i1 %55, label %56, label %8, !llvm.loop !39 -55: ; preds = %49 - %56 = trunc nuw i64 %indvars.iv.next78 to i32 - store i32 %56, ptr %1, align 4, !tbaa !3 +56: ; preds = %50 + %57 = trunc nuw i64 %indvars.iv.next78 to i32 + store i32 %57, ptr %1, align 4, !tbaa !3 br label %.loopexit -.loopexit: ; preds = %8, %55 +.loopexit: ; preds = %8, %56 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #13 ret void } diff --git a/bench/folly/optimized/CompressionContextPoolSingletons.ll b/bench/folly/optimized/CompressionContextPoolSingletons.ll index c7d42aaca6d..8fd6260494b 100644 --- a/bench/folly/optimized/CompressionContextPoolSingletons.ll +++ b/bench/folly/optimized/CompressionContextPoolSingletons.ll @@ -1743,7 +1743,7 @@ _ZN5folly14AccessSpreaderISt6atomicE5stateEv.exit.i.i: ; preds = %5, %1 _ZN5folly11compression31CompressionCoreLocalContextPoolI11ZSTD_CCtx_sNS0_8contexts17ZSTD_CCtx_CreatorENS3_17ZSTD_CCtx_DeleterENS3_18ZSTD_CCtx_ResetterELm4EE5localEv.exit.i: ; preds = %12, %._crit_edge.i.i.i.i %17 = phi i32 [ %.pre.i.i.i.i, %._crit_edge.i.i.i.i ], [ %16, %12 ] %18 = zext i32 %17 to i64 - %19 = getelementptr inbounds nuw [257 x [256 x i8]], ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 0, i64 4, i64 %18 + %19 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 1024), i64 0, i64 %18 %20 = load atomic i8, ptr %19 monotonic, align 1, !noalias !84 %21 = zext i8 %20 to i64 %22 = getelementptr inbounds nuw [4 x %"class.folly::compression::CompressionCoreLocalContextPool::Storage"], ptr getelementptr inbounds nuw (i8, ptr @_ZN5folly11compression8contexts12_GLOBAL__N_124zstd_cctx_pool_singletonE, i64 64), i64 0, i64 %21 @@ -2081,7 +2081,7 @@ _ZN5folly14AccessSpreaderISt6atomicE5stateEv.exit.i.i: ; preds = %5, %1 _ZN5folly11compression31CompressionCoreLocalContextPoolI11ZSTD_DCtx_sNS0_8contexts17ZSTD_DCtx_CreatorENS3_17ZSTD_DCtx_DeleterENS3_18ZSTD_DCtx_ResetterELm16EE5localEv.exit.i: ; preds = %12, %._crit_edge.i.i.i.i %17 = phi i32 [ %.pre.i.i.i.i, %._crit_edge.i.i.i.i ], [ %16, %12 ] %18 = zext i32 %17 to i64 - %19 = getelementptr inbounds nuw [257 x [256 x i8]], ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 0, i64 16, i64 %18 + %19 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @_ZZN5folly14AccessSpreaderISt6atomicE5stateEvE5state, i64 4096), i64 0, i64 %18 %20 = load atomic i8, ptr %19 monotonic, align 1, !noalias !102 %21 = zext i8 %20 to i64 %22 = getelementptr inbounds nuw [16 x %"class.folly::compression::CompressionCoreLocalContextPool::Storage"], ptr getelementptr inbounds nuw (i8, ptr @_ZN5folly11compression8contexts12_GLOBAL__N_124zstd_dctx_pool_singletonE, i64 64), i64 0, i64 %21 diff --git a/bench/freetype/optimized/truetype.ll b/bench/freetype/optimized/truetype.ll index a6cd5d97cbf..0f82a44abb5 100644 --- a/bench/freetype/optimized/truetype.ll +++ b/bench/freetype/optimized/truetype.ll @@ -21589,7 +21589,7 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 br i1 %exitcond75.not.i, label %tt_check_trickyness_family.exit.sink.split, label %.preheader.split.us.i, !llvm.loop !807 63: ; preds = %.loopexit51.i, %.lr.ph.i - %64 = phi i16 [ %54, %.lr.ph.i ], [ %135, %.loopexit51.i ] + %64 = phi i16 [ %54, %.lr.ph.i ], [ %134, %.loopexit51.i ] %indvars.iv70.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next71.i, %.loopexit51.i ] %.03859.i = phi i8 [ 0, %.lr.ph.i ], [ %.240.i, %.loopexit51.i ] %65 = load ptr, ptr %55, align 8, !tbaa !808 @@ -21610,169 +21610,170 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 70: ; preds = %69, %68, %63 %.139.i = phi i8 [ %.03859.i, %68 ], [ %.03859.i, %69 ], [ 1, %63 ] %.0.i9 = phi i64 [ 1, %68 ], [ 2, %69 ], [ 0, %63 ] + %invariant.gep.i = getelementptr inbounds nuw [3 x %struct.tt_sfnt_id_rec_], ptr @tt_check_trickyness_sfnt_ids.sfnt_id, i64 0, i64 %.0.i9 br label %71 -71: ; preds = %134, %70 - %indvars.iv.i10 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i11, %134 ] - %.04157.i = phi i64 [ 0, %70 ], [ %.243.i, %134 ] +71: ; preds = %133, %70 + %indvars.iv.i10 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i11, %133 ] + %.04157.i = phi i64 [ 0, %70 ], [ %.243.i, %133 ] %72 = load ptr, ptr %55, align 8, !tbaa !808 %73 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i, i32 3 %74 = load i64, ptr %73, align 8, !tbaa !811 - %75 = getelementptr inbounds nuw [31 x [3 x %struct.tt_sfnt_id_rec_]], ptr @tt_check_trickyness_sfnt_ids.sfnt_id, i64 0, i64 %indvars.iv.i10, i64 %.0.i9 - %76 = getelementptr inbounds nuw i8, ptr %75, i64 8 - %77 = load i64, ptr %76, align 8, !tbaa !812 - %78 = icmp eq i64 %74, %77 - br i1 %78, label %79, label %134 + %gep.i = getelementptr inbounds nuw [31 x [3 x %struct.tt_sfnt_id_rec_]], ptr %invariant.gep.i, i64 0, i64 %indvars.iv.i10 + %75 = getelementptr inbounds nuw i8, ptr %gep.i, i64 8 + %76 = load i64, ptr %75, align 8, !tbaa !812 + %77 = icmp eq i64 %74, %76 + br i1 %77, label %78, label %133 -79: ; preds = %71 +78: ; preds = %71 %.not50.i = icmp eq i64 %.04157.i, 0 - br i1 %.not50.i, label %80, label %tt_get_sfnt_checksum.exit.i - -80: ; preds = %79 - %81 = load ptr, ptr %56, align 8, !tbaa !453 - %.not.i.i13 = icmp eq ptr %81, null - br i1 %.not.i.i13, label %tt_get_sfnt_checksum.exit.i, label %82 - -82: ; preds = %80 - %83 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i - %84 = load i64, ptr %83, align 8, !tbaa !809 - %85 = load ptr, ptr %57, align 8, !tbaa !44 - %86 = tail call i32 %81(ptr noundef nonnull %0, i64 noundef %84, ptr noundef %85, ptr noundef null) #22 - %.not10.i.i = icmp eq i32 %86, 0 - br i1 %.not10.i.i, label %87, label %tt_get_sfnt_checksum.exit.i - -87: ; preds = %82 - %88 = load ptr, ptr %57, align 8, !tbaa !44 - %89 = load ptr, ptr %55, align 8, !tbaa !808 - %90 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %89, i64 %indvars.iv70.i, i32 3 - %91 = load i64, ptr %90, align 8, !tbaa !811 - %92 = tail call i32 @FT_Stream_EnterFrame(ptr noundef %88, i64 noundef %91) #22 - %.not.i.i.i = icmp eq i32 %92, 0 - br i1 %.not.i.i.i, label %93, label %tt_get_sfnt_checksum.exit.i - -93: ; preds = %87 - %94 = getelementptr inbounds nuw i8, ptr %88, i64 64 - %95 = load ptr, ptr %94, align 8, !tbaa !596 - %96 = icmp ugt i64 %91, 3 - br i1 %96, label %.lr.ph.i.i.i, label %.preheader.i.i.i - -.preheader.i.i.i: ; preds = %.lr.ph.i.i.i, %93 - %.023.lcssa.i.i.i = phi i64 [ %91, %93 ], [ %116, %.lr.ph.i.i.i ] - %.020.lcssa.i.i.i = phi i32 [ 0, %93 ], [ %115, %.lr.ph.i.i.i ] - %.019.lcssa.i.i.i = phi ptr [ %95, %93 ], [ %97, %.lr.ph.i.i.i ] + br i1 %.not50.i, label %79, label %tt_get_sfnt_checksum.exit.i + +79: ; preds = %78 + %80 = load ptr, ptr %56, align 8, !tbaa !453 + %.not.i.i13 = icmp eq ptr %80, null + br i1 %.not.i.i13, label %tt_get_sfnt_checksum.exit.i, label %81 + +81: ; preds = %79 + %82 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i + %83 = load i64, ptr %82, align 8, !tbaa !809 + %84 = load ptr, ptr %57, align 8, !tbaa !44 + %85 = tail call i32 %80(ptr noundef nonnull %0, i64 noundef %83, ptr noundef %84, ptr noundef null) #22 + %.not10.i.i = icmp eq i32 %85, 0 + br i1 %.not10.i.i, label %86, label %tt_get_sfnt_checksum.exit.i + +86: ; preds = %81 + %87 = load ptr, ptr %57, align 8, !tbaa !44 + %88 = load ptr, ptr %55, align 8, !tbaa !808 + %89 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %88, i64 %indvars.iv70.i, i32 3 + %90 = load i64, ptr %89, align 8, !tbaa !811 + %91 = tail call i32 @FT_Stream_EnterFrame(ptr noundef %87, i64 noundef %90) #22 + %.not.i.i.i = icmp eq i32 %91, 0 + br i1 %.not.i.i.i, label %92, label %tt_get_sfnt_checksum.exit.i + +92: ; preds = %86 + %93 = getelementptr inbounds nuw i8, ptr %87, i64 64 + %94 = load ptr, ptr %93, align 8, !tbaa !596 + %95 = icmp ugt i64 %90, 3 + br i1 %95, label %.lr.ph.i.i.i, label %.preheader.i.i.i + +.preheader.i.i.i: ; preds = %.lr.ph.i.i.i, %92 + %.023.lcssa.i.i.i = phi i64 [ %90, %92 ], [ %115, %.lr.ph.i.i.i ] + %.020.lcssa.i.i.i = phi i32 [ 0, %92 ], [ %114, %.lr.ph.i.i.i ] + %.019.lcssa.i.i.i = phi ptr [ %94, %92 ], [ %96, %.lr.ph.i.i.i ] %.not2531.i.i.i = icmp eq i64 %.023.lcssa.i.i.i, 0 br i1 %.not2531.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph36.i.i.i -.lr.ph.i.i.i: ; preds = %93, %.lr.ph.i.i.i - %.01928.i.i.i = phi ptr [ %97, %.lr.ph.i.i.i ], [ %95, %93 ] - %.02027.i.i.i = phi i32 [ %115, %.lr.ph.i.i.i ], [ 0, %93 ] - %.02326.i.i.i = phi i64 [ %116, %.lr.ph.i.i.i ], [ %91, %93 ] - %97 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 4 - %98 = load i8, ptr %.01928.i.i.i, align 1, !tbaa !224 - %99 = zext i8 %98 to i32 - %100 = shl nuw i32 %99, 24 - %101 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 1 - %102 = load i8, ptr %101, align 1, !tbaa !224 - %103 = zext i8 %102 to i32 - %104 = shl nuw nsw i32 %103, 16 - %105 = or disjoint i32 %104, %100 - %106 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 2 - %107 = load i8, ptr %106, align 1, !tbaa !224 - %108 = zext i8 %107 to i32 - %109 = shl nuw nsw i32 %108, 8 - %110 = or disjoint i32 %105, %109 - %111 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 3 - %112 = load i8, ptr %111, align 1, !tbaa !224 - %113 = zext i8 %112 to i32 - %114 = or disjoint i32 %110, %113 - %115 = add i32 %114, %.02027.i.i.i - %116 = add i64 %.02326.i.i.i, -4 - %117 = icmp ugt i64 %116, 3 - br i1 %117, label %.lr.ph.i.i.i, label %.preheader.i.i.i, !llvm.loop !814 +.lr.ph.i.i.i: ; preds = %92, %.lr.ph.i.i.i + %.01928.i.i.i = phi ptr [ %96, %.lr.ph.i.i.i ], [ %94, %92 ] + %.02027.i.i.i = phi i32 [ %114, %.lr.ph.i.i.i ], [ 0, %92 ] + %.02326.i.i.i = phi i64 [ %115, %.lr.ph.i.i.i ], [ %90, %92 ] + %96 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 4 + %97 = load i8, ptr %.01928.i.i.i, align 1, !tbaa !224 + %98 = zext i8 %97 to i32 + %99 = shl nuw i32 %98, 24 + %100 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 1 + %101 = load i8, ptr %100, align 1, !tbaa !224 + %102 = zext i8 %101 to i32 + %103 = shl nuw nsw i32 %102, 16 + %104 = or disjoint i32 %103, %99 + %105 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 2 + %106 = load i8, ptr %105, align 1, !tbaa !224 + %107 = zext i8 %106 to i32 + %108 = shl nuw nsw i32 %107, 8 + %109 = or disjoint i32 %104, %108 + %110 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 3 + %111 = load i8, ptr %110, align 1, !tbaa !224 + %112 = zext i8 %111 to i32 + %113 = or disjoint i32 %109, %112 + %114 = add i32 %113, %.02027.i.i.i + %115 = add i64 %.02326.i.i.i, -4 + %116 = icmp ugt i64 %115, 3 + br i1 %116, label %.lr.ph.i.i.i, label %.preheader.i.i.i, !llvm.loop !814 .lr.ph36.i.i.i: ; preds = %.preheader.i.i.i, %.lr.ph36.i.i.i - %.035.i.i.i = phi i32 [ %124, %.lr.ph36.i.i.i ], [ 24, %.preheader.i.i.i ] - %.134.i.i.i = phi ptr [ %118, %.lr.ph36.i.i.i ], [ %.019.lcssa.i.i.i, %.preheader.i.i.i ] - %.12133.i.i.i = phi i32 [ %122, %.lr.ph36.i.i.i ], [ %.020.lcssa.i.i.i, %.preheader.i.i.i ] - %.12432.i.i.i = phi i64 [ %123, %.lr.ph36.i.i.i ], [ %.023.lcssa.i.i.i, %.preheader.i.i.i ] - %118 = getelementptr inbounds nuw i8, ptr %.134.i.i.i, i64 1 - %119 = load i8, ptr %.134.i.i.i, align 1, !tbaa !224 - %120 = zext i8 %119 to i32 - %121 = shl i32 %120, %.035.i.i.i - %122 = add i32 %121, %.12133.i.i.i - %123 = add nsw i64 %.12432.i.i.i, -1 - %124 = add nsw i32 %.035.i.i.i, -8 - %.not25.i.i.i = icmp eq i64 %123, 0 + %.035.i.i.i = phi i32 [ %123, %.lr.ph36.i.i.i ], [ 24, %.preheader.i.i.i ] + %.134.i.i.i = phi ptr [ %117, %.lr.ph36.i.i.i ], [ %.019.lcssa.i.i.i, %.preheader.i.i.i ] + %.12133.i.i.i = phi i32 [ %121, %.lr.ph36.i.i.i ], [ %.020.lcssa.i.i.i, %.preheader.i.i.i ] + %.12432.i.i.i = phi i64 [ %122, %.lr.ph36.i.i.i ], [ %.023.lcssa.i.i.i, %.preheader.i.i.i ] + %117 = getelementptr inbounds nuw i8, ptr %.134.i.i.i, i64 1 + %118 = load i8, ptr %.134.i.i.i, align 1, !tbaa !224 + %119 = zext i8 %118 to i32 + %120 = shl i32 %119, %.035.i.i.i + %121 = add i32 %120, %.12133.i.i.i + %122 = add nsw i64 %.12432.i.i.i, -1 + %123 = add nsw i32 %.035.i.i.i, -8 + %.not25.i.i.i = icmp eq i64 %122, 0 br i1 %.not25.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph36.i.i.i, !llvm.loop !815 ._crit_edge.i.i.i: ; preds = %.lr.ph36.i.i.i, %.preheader.i.i.i - %.121.lcssa.i.i.i = phi i32 [ %.020.lcssa.i.i.i, %.preheader.i.i.i ], [ %122, %.lr.ph36.i.i.i ] - tail call void @FT_Stream_ExitFrame(ptr noundef nonnull %88) #22 - %125 = zext i32 %.121.lcssa.i.i.i to i64 + %.121.lcssa.i.i.i = phi i32 [ %.020.lcssa.i.i.i, %.preheader.i.i.i ], [ %121, %.lr.ph36.i.i.i ] + tail call void @FT_Stream_ExitFrame(ptr noundef nonnull %87) #22 + %124 = zext i32 %.121.lcssa.i.i.i to i64 br label %tt_get_sfnt_checksum.exit.i -tt_get_sfnt_checksum.exit.i: ; preds = %._crit_edge.i.i.i, %87, %82, %80, %79 - %.142.i = phi i64 [ %.04157.i, %79 ], [ 0, %80 ], [ 0, %82 ], [ %125, %._crit_edge.i.i.i ], [ 0, %87 ] - %126 = load i64, ptr %75, align 16, !tbaa !816 - %127 = icmp eq i64 %126, %.142.i - %128 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv.i10 - %129 = load i32, ptr %128, align 4, !tbaa !204 - br i1 %127, label %130, label %tt_get_sfnt_checksum.exit._crit_edge.i - -130: ; preds = %tt_get_sfnt_checksum.exit.i - %131 = add nsw i32 %129, 1 - store i32 %131, ptr %128, align 4, !tbaa !204 +tt_get_sfnt_checksum.exit.i: ; preds = %._crit_edge.i.i.i, %86, %81, %79, %78 + %.142.i = phi i64 [ %.04157.i, %78 ], [ 0, %79 ], [ 0, %81 ], [ %124, %._crit_edge.i.i.i ], [ 0, %86 ] + %125 = load i64, ptr %gep.i, align 16, !tbaa !816 + %126 = icmp eq i64 %125, %.142.i + %127 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv.i10 + %128 = load i32, ptr %127, align 4, !tbaa !204 + br i1 %126, label %129, label %tt_get_sfnt_checksum.exit._crit_edge.i + +129: ; preds = %tt_get_sfnt_checksum.exit.i + %130 = add nsw i32 %128, 1 + store i32 %130, ptr %127, align 4, !tbaa !204 br label %tt_get_sfnt_checksum.exit._crit_edge.i -tt_get_sfnt_checksum.exit._crit_edge.i: ; preds = %130, %tt_get_sfnt_checksum.exit.i - %132 = phi i32 [ %131, %130 ], [ %129, %tt_get_sfnt_checksum.exit.i ] - %133 = icmp eq i32 %132, 3 - br i1 %133, label %tt_check_trickyness_family.exit.sink.split, label %134 +tt_get_sfnt_checksum.exit._crit_edge.i: ; preds = %129, %tt_get_sfnt_checksum.exit.i + %131 = phi i32 [ %130, %129 ], [ %128, %tt_get_sfnt_checksum.exit.i ] + %132 = icmp eq i32 %131, 3 + br i1 %132, label %tt_check_trickyness_family.exit.sink.split, label %133 -134: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %71 +133: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %71 %.243.i = phi i64 [ %.142.i, %tt_get_sfnt_checksum.exit._crit_edge.i ], [ %.04157.i, %71 ] %indvars.iv.next.i11 = add nuw nsw i64 %indvars.iv.i10, 1 %exitcond.not.i12 = icmp eq i64 %indvars.iv.next.i11, 31 br i1 %exitcond.not.i12, label %.loopexit51.loopexit.i, label %71, !llvm.loop !817 -.loopexit51.loopexit.i: ; preds = %134 +.loopexit51.loopexit.i: ; preds = %133 %.pre80.i = load i16, ptr %53, align 8, !tbaa !806 br label %.loopexit51.i .loopexit51.i: ; preds = %.loopexit51.loopexit.i, %63 - %135 = phi i16 [ %64, %63 ], [ %.pre80.i, %.loopexit51.loopexit.i ] + %134 = phi i16 [ %64, %63 ], [ %.pre80.i, %.loopexit51.loopexit.i ] %.240.i = phi i8 [ %.03859.i, %63 ], [ %.139.i, %.loopexit51.loopexit.i ] %indvars.iv.next71.i = add nuw nsw i64 %indvars.iv70.i, 1 - %136 = zext i16 %135 to i64 - %137 = icmp samesign ult i64 %indvars.iv.next71.i, %136 - br i1 %137, label %63, label %.preheader.i, !llvm.loop !818 + %135 = zext i16 %134 to i64 + %136 = icmp samesign ult i64 %indvars.iv.next71.i, %135 + br i1 %136, label %63, label %.preheader.i, !llvm.loop !818 -138: ; preds = %.preheader.split._crit_edge.i +137: ; preds = %.preheader.split._crit_edge.i %indvars.iv.next77.i = add nuw nsw i64 %indvars.iv76.i, 1 %exitcond79.not.i = icmp eq i64 %indvars.iv.next77.i, 31 br i1 %exitcond79.not.i, label %tt_check_trickyness_family.exit.sink.split, label %.preheader.split.i, !llvm.loop !807 -.preheader.split.i: ; preds = %.preheader.split.i.preheader, %138 - %indvars.iv76.i = phi i64 [ %indvars.iv.next77.i, %138 ], [ 0, %.preheader.split.i.preheader ] - %139 = trunc i64 %indvars.iv76.i to i32 - %140 = add i32 %139, -16 - %.not45.i = icmp ult i32 %140, 12 - %141 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv76.i - %142 = load i32, ptr %141, align 4, !tbaa !204 - br i1 %.not45.i, label %143, label %.preheader.split._crit_edge.i - -143: ; preds = %.preheader.split.i - %144 = add nsw i32 %142, 1 - store i32 %144, ptr %141, align 4, !tbaa !204 +.preheader.split.i: ; preds = %.preheader.split.i.preheader, %137 + %indvars.iv76.i = phi i64 [ %indvars.iv.next77.i, %137 ], [ 0, %.preheader.split.i.preheader ] + %138 = trunc i64 %indvars.iv76.i to i32 + %139 = add i32 %138, -16 + %.not45.i = icmp ult i32 %139, 12 + %140 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv76.i + %141 = load i32, ptr %140, align 4, !tbaa !204 + br i1 %.not45.i, label %142, label %.preheader.split._crit_edge.i + +142: ; preds = %.preheader.split.i + %143 = add nsw i32 %141, 1 + store i32 %143, ptr %140, align 4, !tbaa !204 br label %.preheader.split._crit_edge.i -.preheader.split._crit_edge.i: ; preds = %143, %.preheader.split.i - %145 = phi i32 [ %144, %143 ], [ %142, %.preheader.split.i ] - %146 = icmp eq i32 %145, 3 - br i1 %146, label %tt_check_trickyness_family.exit.sink.split, label %138 +.preheader.split._crit_edge.i: ; preds = %142, %.preheader.split.i + %144 = phi i32 [ %143, %142 ], [ %141, %.preheader.split.i ] + %145 = icmp eq i32 %144, 3 + br i1 %145, label %tt_check_trickyness_family.exit.sink.split, label %137 -tt_check_trickyness_family.exit.sink.split: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %62, %.preheader.split.us.i, %138, %.preheader.split._crit_edge.i - %.0.ph = phi i8 [ 1, %.preheader.split._crit_edge.i ], [ 0, %138 ], [ 1, %.preheader.split.us.i ], [ 0, %62 ], [ 1, %tt_get_sfnt_checksum.exit._crit_edge.i ] +tt_check_trickyness_family.exit.sink.split: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %62, %.preheader.split.us.i, %137, %.preheader.split._crit_edge.i + %.0.ph = phi i8 [ 1, %.preheader.split._crit_edge.i ], [ 0, %137 ], [ 1, %.preheader.split.us.i ], [ 0, %62 ], [ 1, %tt_get_sfnt_checksum.exit._crit_edge.i ] call void @llvm.lifetime.end.p0(i64 124, ptr nonnull %2) #22 br label %tt_check_trickyness_family.exit diff --git a/bench/graphviz/optimized/mincross.ll b/bench/graphviz/optimized/mincross.ll index f99d2d824d3..ccbbd6c2ea8 100644 --- a/bench/graphviz/optimized/mincross.ll +++ b/bench/graphviz/optimized/mincross.ll @@ -5086,45 +5086,46 @@ define void @virtual_weight(ptr noundef readonly captures(none) %0) local_unname endpoint_class.exit: ; preds = %1, %12 %.0.i = phi i64 [ 2, %1 ], [ %16, %12 ] - %17 = icmp eq i32 %3, 2 - %.idx9 = select i1 %17, i64 0, i64 -64 - %18 = getelementptr inbounds i8, ptr %0, i64 %.idx9 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 56 - %20 = load ptr, ptr %19, align 8, !tbaa !51 - %21 = getelementptr i8, ptr %20, i64 16 - %.val10 = load ptr, ptr %21, align 8, !tbaa !3 - %22 = getelementptr inbounds nuw i8, ptr %.val10, i64 216 - %23 = load i8, ptr %22, align 8, !tbaa !137 - %24 = icmp eq i8 %23, 1 - br i1 %24, label %endpoint_class.exit13, label %25 - -25: ; preds = %endpoint_class.exit - %26 = getelementptr inbounds nuw i8, ptr %.val10, i64 234 - %27 = load i8, ptr %26, align 2, !tbaa !201 - %28 = icmp slt i8 %27, 2 - %29 = zext i1 %28 to i64 + %17 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @table, i64 0, i64 %.0.i + %18 = icmp eq i32 %3, 2 + %.idx9 = select i1 %18, i64 0, i64 -64 + %19 = getelementptr inbounds i8, ptr %0, i64 %.idx9 + %20 = getelementptr inbounds nuw i8, ptr %19, i64 56 + %21 = load ptr, ptr %20, align 8, !tbaa !51 + %22 = getelementptr i8, ptr %21, i64 16 + %.val10 = load ptr, ptr %22, align 8, !tbaa !3 + %23 = getelementptr inbounds nuw i8, ptr %.val10, i64 216 + %24 = load i8, ptr %23, align 8, !tbaa !137 + %25 = icmp eq i8 %24, 1 + br i1 %25, label %endpoint_class.exit13, label %26 + +26: ; preds = %endpoint_class.exit + %27 = getelementptr inbounds nuw i8, ptr %.val10, i64 234 + %28 = load i8, ptr %27, align 2, !tbaa !201 + %29 = icmp slt i8 %28, 2 + %30 = zext i1 %29 to i64 br label %endpoint_class.exit13 -endpoint_class.exit13: ; preds = %endpoint_class.exit, %25 - %.0.i12 = phi i64 [ 2, %endpoint_class.exit ], [ %29, %25 ] - %30 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @table, i64 0, i64 %.0.i, i64 %.0.i12 - %31 = load i32, ptr %30, align 4, !tbaa !67 - %32 = sdiv i32 2147483647, %31 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %34 = load ptr, ptr %33, align 8, !tbaa !3 - %35 = getelementptr inbounds nuw i8, ptr %34, i64 212 - %36 = load i32, ptr %35, align 4, !tbaa !202 - %37 = icmp slt i32 %32, %36 - br i1 %37, label %38, label %39 +endpoint_class.exit13: ; preds = %endpoint_class.exit, %26 + %.0.i12 = phi i64 [ 2, %endpoint_class.exit ], [ %30, %26 ] + %31 = getelementptr inbounds nuw [3 x i32], ptr %17, i64 0, i64 %.0.i12 + %32 = load i32, ptr %31, align 4, !tbaa !67 + %33 = sdiv i32 2147483647, %32 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %35 = load ptr, ptr %34, align 8, !tbaa !3 + %36 = getelementptr inbounds nuw i8, ptr %35, i64 212 + %37 = load i32, ptr %36, align 4, !tbaa !202 + %38 = icmp slt i32 %33, %37 + br i1 %38, label %39, label %40 -38: ; preds = %endpoint_class.exit13 +39: ; preds = %endpoint_class.exit13 tail call void (ptr, ...) @agerrorf(ptr noundef nonnull @.str.9) #23 tail call fastcc void @graphviz_exit() #26 unreachable -39: ; preds = %endpoint_class.exit13 - %40 = mul nsw i32 %36, %31 - store i32 %40, ptr %35, align 4, !tbaa !202 +40: ; preds = %endpoint_class.exit13 + %41 = mul nsw i32 %37, %32 + store i32 %41, ptr %36, align 4, !tbaa !202 ret void } diff --git a/bench/gromacs/optimized/boxdeformation.ll b/bench/gromacs/optimized/boxdeformation.ll index 92105373575..85dbb5ae19a 100644 --- a/bench/gromacs/optimized/boxdeformation.ll +++ b/bench/gromacs/optimized/boxdeformation.ll @@ -876,30 +876,33 @@ declare float @llvm.fmuladd.f32(float, float, float) #17 define void @_ZN3gmx27setBoxDeformationFlowMatrixEPA3_KfS2_PA3_f(ptr noundef readonly captures(none) %0, ptr noundef readonly captures(none) %1, ptr noundef writeonly captures(none) %2) local_unnamed_addr #18 { br label %.preheader -.preheader: ; preds = %3, %5 - %indvars.iv16 = phi i64 [ 0, %3 ], [ %indvars.iv.next17, %5 ] - br label %6 +.preheader: ; preds = %3, %6 + %indvars.iv16 = phi i64 [ 0, %3 ], [ %indvars.iv.next17, %6 ] + %invariant.gep = getelementptr inbounds nuw [3 x float], ptr %0, i64 0, i64 %indvars.iv16 + %4 = getelementptr inbounds nuw [3 x float], ptr %2, i64 %indvars.iv16 + br label %7 -4: ; preds = %5 +5: ; preds = %6 ret void -5: ; preds = %6 +6: ; preds = %7 %indvars.iv.next17 = add nuw nsw i64 %indvars.iv16, 1 %exitcond19.not = icmp eq i64 %indvars.iv.next17, 3 - br i1 %exitcond19.not, label %4, label %.preheader, !llvm.loop !173 - -6: ; preds = %.preheader, %6 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %6 ] - %7 = getelementptr inbounds nuw [3 x float], ptr %0, i64 %indvars.iv, i64 %indvars.iv16 - %8 = load float, ptr %7, align 4, !tbaa !125 - %9 = getelementptr inbounds nuw [3 x float], ptr %1, i64 %indvars.iv, i64 %indvars.iv - %10 = load float, ptr %9, align 4, !tbaa !125 - %11 = fdiv float %8, %10 - %12 = getelementptr inbounds nuw [3 x float], ptr %2, i64 %indvars.iv16, i64 %indvars.iv - store float %11, ptr %12, align 4, !tbaa !125 + br i1 %exitcond19.not, label %5, label %.preheader, !llvm.loop !173 + +7: ; preds = %.preheader, %7 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %7 ] + %gep = getelementptr inbounds nuw [3 x float], ptr %invariant.gep, i64 %indvars.iv + %8 = load float, ptr %gep, align 4, !tbaa !125 + %9 = getelementptr inbounds nuw [3 x float], ptr %1, i64 %indvars.iv + %10 = getelementptr inbounds nuw [3 x float], ptr %9, i64 0, i64 %indvars.iv + %11 = load float, ptr %10, align 4, !tbaa !125 + %12 = fdiv float %8, %11 + %13 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv + store float %12, ptr %13, align 4, !tbaa !125 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %5, label %6, !llvm.loop !174 + br i1 %exitcond.not, label %6, label %7, !llvm.loop !174 } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) diff --git a/bench/gromacs/optimized/hxprops.ll b/bench/gromacs/optimized/hxprops.ll index 6b7dc6996d6..acd3da362fb 100644 --- a/bench/gromacs/optimized/hxprops.ll +++ b/bench/gromacs/optimized/hxprops.ll @@ -384,46 +384,47 @@ define noundef float @_Z3dipiPKiPA3_KfPK6t_atom(i32 noundef %0, ptr noundef read %wide.trip.count = zext nneg i32 %0 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %20 - %indvars.iv17 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next18, %20 ] +.lr.ph: ; preds = %.lr.ph.preheader, %21 + %indvars.iv17 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next18, %21 ] %9 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv17 %10 = load i32, ptr %9, align 4, !tbaa !20 %11 = sext i32 %10 to i64 %12 = getelementptr inbounds %struct.t_atom, ptr %3, i64 %11, i32 1 %13 = load float, ptr %12, align 4, !tbaa !25 - br label %14 + %14 = getelementptr inbounds [3 x float], ptr %2, i64 %11 + br label %15 -14: ; preds = %.lr.ph, %14 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %14 ] - %15 = getelementptr inbounds [3 x float], ptr %2, i64 %11, i64 %indvars.iv - %16 = load float, ptr %15, align 4, !tbaa !21 - %17 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv - %18 = load float, ptr %17, align 4, !tbaa !21 - %19 = tail call float @llvm.fmuladd.f32(float %16, float %13, float %18) - store float %19, ptr %17, align 4, !tbaa !21 +15: ; preds = %.lr.ph, %15 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %15 ] + %16 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv + %17 = load float, ptr %16, align 4, !tbaa !21 + %18 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv + %19 = load float, ptr %18, align 4, !tbaa !21 + %20 = tail call float @llvm.fmuladd.f32(float %17, float %13, float %19) + store float %20, ptr %18, align 4, !tbaa !21 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %20, label %14, !llvm.loop !29 + br i1 %exitcond.not, label %21, label %15, !llvm.loop !29 -20: ; preds = %14 +21: ; preds = %15 %indvars.iv.next18 = add nuw nsw i64 %indvars.iv17, 1 %exitcond20.not = icmp eq i64 %indvars.iv.next18, %wide.trip.count br i1 %exitcond20.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !30 -._crit_edge.loopexit: ; preds = %20 +._crit_edge.loopexit: ; preds = %21 %.pre = load float, ptr %5, align 4, !tbaa !21 %.pre21 = load float, ptr %6, align 4, !tbaa !21 %.pre22 = load float, ptr %7, align 4, !tbaa !21 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %4 - %21 = phi float [ %.pre22, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] - %22 = phi float [ %.pre21, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] - %23 = phi float [ %.pre, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] - %24 = fmul float %22, %22 - %25 = tail call float @llvm.fmuladd.f32(float %23, float %23, float %24) - %26 = tail call noundef float @llvm.fmuladd.f32(float %21, float %21, float %25) - %sqrt.i = tail call noundef float @llvm.sqrt.f32(float %26) + %22 = phi float [ %.pre22, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] + %23 = phi float [ %.pre21, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] + %24 = phi float [ %.pre, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] + %25 = fmul float %23, %23 + %26 = tail call float @llvm.fmuladd.f32(float %24, float %24, float %25) + %27 = tail call noundef float @llvm.fmuladd.f32(float %22, float %22, float %26) + %sqrt.i = tail call noundef float @llvm.sqrt.f32(float %27) call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #21 ret float %sqrt.i } diff --git a/bench/gromacs/optimized/pbc_simd.ll b/bench/gromacs/optimized/pbc_simd.ll index c752916c28e..1c20afa3532 100644 --- a/bench/gromacs/optimized/pbc_simd.ll +++ b/bench/gromacs/optimized/pbc_simd.ll @@ -91,11 +91,12 @@ define void @_Z12set_pbc_simdPK5t_pbcPf(ptr noundef readonly captures(address_is 52: ; preds = %.lr.ph, %52 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %52 ] - %53 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv, i64 %indvars.iv - %54 = load float, ptr %53, align 4, !tbaa !12 - %55 = fdiv float 1.000000e+00, %54 - %56 = getelementptr inbounds nuw [3 x float], ptr %3, i64 0, i64 %indvars.iv - store float %55, ptr %56, align 4, !tbaa !12 + %53 = getelementptr inbounds nuw [3 x [3 x float]], ptr %10, i64 0, i64 %indvars.iv + %54 = getelementptr inbounds nuw [3 x float], ptr %53, i64 0, i64 %indvars.iv + %55 = load float, ptr %54, align 4, !tbaa !12 + %56 = fdiv float 1.000000e+00, %55 + %57 = getelementptr inbounds nuw [3 x float], ptr %3, i64 0, i64 %indvars.iv + store float %56, ptr %57, align 4, !tbaa !12 %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.loopexit, label %52, !llvm.loop !14 diff --git a/bench/gromacs/optimized/sm_simple.ll b/bench/gromacs/optimized/sm_simple.ll index c0996f283b5..9e72bee7130 100644 --- a/bench/gromacs/optimized/sm_simple.ll +++ b/bench/gromacs/optimized/sm_simple.ll @@ -2177,10 +2177,10 @@ define internal void @_ZL10evaluate_xRKN3gmx20SelMethodEvalContextEP13gmx_ana_po 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i, i64 0 - %14 = load float, ptr %13, align 4, !tbaa !173 - %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i - store float %14, ptr %15, align 4, !tbaa !173 + %gep.i = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i + %13 = load float, ptr %gep.i, align 4, !tbaa !173 + %14 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i + store float %13, ptr %14, align 4, !tbaa !173 %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 %_ZL14evaluate_coordPfP13gmx_ana_pos_ti.exit, label %12, !llvm.loop !192 @@ -2202,15 +2202,16 @@ define internal void @_ZL10evaluate_yRKN3gmx20SelMethodEvalContextEP13gmx_ana_po .lr.ph.i: ; preds = %4 %11 = load ptr, ptr %1, align 8, !tbaa !191 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %11, i64 4 %wide.trip.count.i = zext nneg i32 %6 to i64 br label %12 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i, i64 1 - %14 = load float, ptr %13, align 4, !tbaa !173 - %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i - store float %14, ptr %15, align 4, !tbaa !173 + %gep.i = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i + %13 = load float, ptr %gep.i, align 4, !tbaa !173 + %14 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i + store float %13, ptr %14, align 4, !tbaa !173 %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 %_ZL14evaluate_coordPfP13gmx_ana_pos_ti.exit, label %12, !llvm.loop !192 @@ -2232,15 +2233,16 @@ define internal void @_ZL10evaluate_zRKN3gmx20SelMethodEvalContextEP13gmx_ana_po .lr.ph.i: ; preds = %4 %11 = load ptr, ptr %1, align 8, !tbaa !191 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %11, i64 8 %wide.trip.count.i = zext nneg i32 %6 to i64 br label %12 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i, i64 2 - %14 = load float, ptr %13, align 4, !tbaa !173 - %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i - store float %14, ptr %15, align 4, !tbaa !173 + %gep.i = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i + %13 = load float, ptr %gep.i, align 4, !tbaa !173 + %14 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i + store float %13, ptr %14, align 4, !tbaa !173 %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 %_ZL14evaluate_coordPfP13gmx_ana_pos_ti.exit, label %12, !llvm.loop !192 diff --git a/bench/grpc/optimized/executor.ll b/bench/grpc/optimized/executor.ll index 6f253bf8418..dca7ae563fc 100644 --- a/bench/grpc/optimized/executor.ll +++ b/bench/grpc/optimized/executor.ll @@ -2265,50 +2265,51 @@ declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #16 define void @_ZN9grpc_core8Executor3RunEP12grpc_closureN4absl12lts_202407226StatusENS_12ExecutorTypeENS_15ExecutorJobTypeE(ptr noundef %0, ptr noundef readonly captures(none) %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { %5 = alloca %"class.absl::lts_20240722::Status", align 8 %6 = sext i32 %2 to i64 - %7 = sext i32 %3 to i64 - %8 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @_ZN9grpc_core12_GLOBAL__N_121executor_enqueue_fns_E, i64 0, i64 %6, i64 %7 - %9 = load ptr, ptr %8, align 8, !tbaa !91 - %10 = load i64, ptr %1, align 8, !tbaa !56 - store i64 %10, ptr %5, align 8, !tbaa !56 - %11 = and i64 %10, 1 - %.not.i.i = icmp eq i64 %11, 0 - br i1 %.not.i.i, label %12, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit - -12: ; preds = %4 - %13 = inttoptr i64 %10 to ptr - %14 = atomicrmw add ptr %13, i32 1 monotonic, align 4 + %7 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @_ZN9grpc_core12_GLOBAL__N_121executor_enqueue_fns_E, i64 0, i64 %6 + %8 = sext i32 %3 to i64 + %9 = getelementptr inbounds nuw [2 x ptr], ptr %7, i64 0, i64 %8 + %10 = load ptr, ptr %9, align 8, !tbaa !91 + %11 = load i64, ptr %1, align 8, !tbaa !56 + store i64 %11, ptr %5, align 8, !tbaa !56 + %12 = and i64 %11, 1 + %.not.i.i = icmp eq i64 %12, 0 + br i1 %.not.i.i, label %13, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit + +13: ; preds = %4 + %14 = inttoptr i64 %11 to ptr + %15 = atomicrmw add ptr %14, i32 1 monotonic, align 4 br label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit -_ZN4absl12lts_202407226StatusC2ERKS1_.exit: ; preds = %4, %12 - invoke void %9(ptr noundef %0, ptr noundef nonnull %5) - to label %15 unwind label %23 - -15: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit - %16 = load i64, ptr %5, align 8, !tbaa !56 - %17 = and i64 %16, 1 - %.not.i.i4 = icmp eq i64 %17, 0 - br i1 %.not.i.i4, label %18, label %_ZN4absl12lts_202407226StatusD2Ev.exit - -18: ; preds = %15 - %19 = inttoptr i64 %16 to ptr - invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %19) - to label %_ZN4absl12lts_202407226StatusD2Ev.exit unwind label %20 +_ZN4absl12lts_202407226StatusC2ERKS1_.exit: ; preds = %4, %13 + invoke void %10(ptr noundef %0, ptr noundef nonnull %5) + to label %16 unwind label %24 -20: ; preds = %18 - %21 = landingpad { ptr, i32 } +16: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit + %17 = load i64, ptr %5, align 8, !tbaa !56 + %18 = and i64 %17, 1 + %.not.i.i4 = icmp eq i64 %18, 0 + br i1 %.not.i.i4, label %19, label %_ZN4absl12lts_202407226StatusD2Ev.exit + +19: ; preds = %16 + %20 = inttoptr i64 %17 to ptr + invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %20) + to label %_ZN4absl12lts_202407226StatusD2Ev.exit unwind label %21 + +21: ; preds = %19 + %22 = landingpad { ptr, i32 } catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 - call void @__clang_call_terminate(ptr %22) #29 + %23 = extractvalue { ptr, i32 } %22, 0 + call void @__clang_call_terminate(ptr %23) #29 unreachable -_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %15, %18 +_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %16, %19 ret void -23: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit - %24 = landingpad { ptr, i32 } +24: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit + %25 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #26 - resume { ptr, i32 } %24 + resume { ptr, i32 } %25 } ; Function Attrs: mustprogress uwtable diff --git a/bench/hermes/optimized/rustgen.ll b/bench/hermes/optimized/rustgen.ll index 531936a3a3f..cdfdaff0354 100644 --- a/bench/hermes/optimized/rustgen.ll +++ b/bench/hermes/optimized/rustgen.ll @@ -1402,11 +1402,12 @@ _ZN4llvh11raw_ostreamlsEPKc.exit73.i.i: ; preds = %if.then4.i.i68.i.i, %call22.i.i = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh4outsEv() #17 %73 = load i32, ptr %__begin2.sroa.0.04.i.i, align 8 %idxprom.i.i.i = sext i32 %73 to i64 + %arrayidx.i.i.i = getelementptr inbounds [7 x [2 x %"class.llvh::StringLiteral"]], ptr @_ZL9typeName_, i64 0, i64 %idxprom.i.i.i %optional.i.i.i = getelementptr inbounds nuw i8, ptr %__begin2.sroa.0.04.i.i, i64 40 %74 = load i8, ptr %optional.i.i.i, align 8 %75 = and i8 %74, 1 %idxprom2.i.i.i = zext nneg i8 %75 to i64 - %arrayidx3.i.i.i = getelementptr inbounds [7 x [2 x %"class.llvh::StringLiteral"]], ptr @_ZL9typeName_, i64 0, i64 %idxprom.i.i.i, i64 %idxprom2.i.i.i + %arrayidx3.i.i.i = getelementptr inbounds nuw [2 x %"class.llvh::StringLiteral"], ptr %arrayidx.i.i.i, i64 0, i64 %idxprom2.i.i.i %retval.sroa.0.0.copyload.i.i.i = load ptr, ptr %arrayidx3.i.i.i, align 16 %retval.sroa.2.0.arrayidx3.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %arrayidx3.i.i.i, i64 8 %retval.sroa.2.0.copyload.i.i.i = load i64, ptr %retval.sroa.2.0.arrayidx3.sroa_idx.i.i.i, align 8 diff --git a/bench/hwloc/optimized/common-ps.ll b/bench/hwloc/optimized/common-ps.ll index de7442721f5..8fa8ff8e084 100644 --- a/bench/hwloc/optimized/common-ps.ll +++ b/bench/hwloc/optimized/common-ps.ll @@ -37,7 +37,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %10 = trunc i64 %9 to i32 %11 = tail call noalias ptr @hwloc_bitmap_alloc() #15 %.not = icmp eq ptr %11, null - br i1 %.not, label %192, label %12 + br i1 %.not, label %193, label %12 12: ; preds = %4 %13 = tail call noalias dereferenceable_or_null(36) ptr @malloc(i64 noundef 36) #16 @@ -193,7 +193,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no 89: ; preds = %88, %66 %90 = and i64 %3, 1 %.not176 = icmp eq i64 %90, 0 - br i1 %.not176, label %177, label %91 + br i1 %.not176, label %178, label %91 91: ; preds = %89 %92 = call noalias dereferenceable_or_null(33) ptr @malloc(i64 noundef 33) #16 @@ -201,7 +201,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %94 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %92, i64 noundef 33, ptr noundef nonnull @.str.6, i64 noundef %93) #15 %95 = call ptr @opendir(ptr noundef nonnull %92) %.not177 = icmp eq ptr %95, null - br i1 %.not177, label %176, label %96 + br i1 %.not177, label %177, label %96 96: ; preds = %91 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #15 @@ -243,8 +243,8 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %113 = getelementptr inbounds nuw i8, ptr %2, i64 1116 br label %.outer -.outer: ; preds = %170, %110 - %.0145.ph = phi i32 [ %171, %170 ], [ 0, %110 ] +.outer: ; preds = %171, %110 + %.0145.ph = phi i32 [ %172, %171 ], [ 0, %110 ] br label %114 114: ; preds = %116, %.outer @@ -267,13 +267,13 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no store i64 %118, ptr %124, align 8, !tbaa !20 %125 = call noalias dereferenceable_or_null(61) ptr @malloc(i64 noundef 61) #16 %.not182 = icmp eq ptr %125, null - br i1 %.not182, label %152, label %126 + br i1 %.not182, label %153, label %126 126: ; preds = %121 %127 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %125, i64 noundef 61, ptr noundef nonnull @.str.7, ptr noundef nonnull %92, i64 noundef %118) #15 %128 = call i32 (ptr, i32, ...) @open(ptr noundef nonnull %125, i32 noundef 2) #15 %129 = icmp sgt i32 %128, -1 - br i1 %129, label %130, label %151 + br i1 %129, label %130, label %152 130: ; preds = %126 %131 = load ptr, ptr %109, align 8, !tbaa !18 @@ -287,132 +287,133 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %137 = load ptr, ptr %109, align 8, !tbaa !18 %138 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %137, i64 %123, i32 3 store i8 0, ptr %138, align 4, !tbaa !12 - br label %144 + br label %145 139: ; preds = %130 %140 = icmp samesign ult i64 %133, 16 - br i1 %140, label %141, label %144 + br i1 %140, label %141, label %145 141: ; preds = %139 %142 = load ptr, ptr %109, align 8, !tbaa !18 - %143 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %142, i64 %123, i32 3, i64 %133 - store i8 0, ptr %143, align 1, !tbaa !12 - br label %144 - -144: ; preds = %139, %141, %136 - %145 = load ptr, ptr %109, align 8, !tbaa !18 - %146 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %145, i64 %123, i32 3, i64 15 - store i8 0, ptr %146, align 1, !tbaa !12 - %147 = load ptr, ptr %109, align 8, !tbaa !18 - %148 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %147, i64 %123, i32 3 - %149 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %148, i32 noundef 10) #17 - store ptr %149, ptr %8, align 8, !tbaa !14 - %.not183 = icmp eq ptr %149, null - br i1 %.not183, label %151, label %150 - -150: ; preds = %144 - store i8 0, ptr %149, align 1, !tbaa !12 - br label %151 - -151: ; preds = %144, %150, %126 - call void @free(ptr noundef nonnull %125) #15 + %143 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %142, i64 %123, i32 3 + %144 = getelementptr inbounds nuw [16 x i8], ptr %143, i64 0, i64 %133 + store i8 0, ptr %144, align 1, !tbaa !12 + br label %145 + +145: ; preds = %139, %141, %136 + %146 = load ptr, ptr %109, align 8, !tbaa !18 + %147 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %146, i64 %123, i32 3, i64 15 + store i8 0, ptr %147, align 1, !tbaa !12 + %148 = load ptr, ptr %109, align 8, !tbaa !18 + %149 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %148, i64 %123, i32 3 + %150 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %149, i32 noundef 10) #17 + store ptr %150, ptr %8, align 8, !tbaa !14 + %.not183 = icmp eq ptr %150, null + br i1 %.not183, label %152, label %151 + +151: ; preds = %145 + store i8 0, ptr %150, align 1, !tbaa !12 br label %152 -152: ; preds = %151, %121 - %153 = trunc i64 %118 to i32 - br i1 %.not184, label %156, label %154 - -154: ; preds = %152 - %155 = call i32 @hwloc_linux_get_tid_last_cpu_location(ptr noundef %0, i32 noundef %153, ptr noundef nonnull %11) #15 - %.not186 = icmp eq i32 %155, 0 - br i1 %.not186, label %158, label %170 - -156: ; preds = %152 - %157 = call i32 @hwloc_linux_get_tid_cpubind(ptr noundef %0, i32 noundef %153, ptr noundef nonnull %11) #15 - %.not185 = icmp eq i32 %157, 0 - br i1 %.not185, label %158, label %170 - -158: ; preds = %156, %154 - %159 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 - %160 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 - %.not187 = icmp eq i32 %160, 0 - br i1 %.not187, label %161, label %170 - -161: ; preds = %158 - %162 = call noalias ptr @hwloc_bitmap_dup(ptr noundef nonnull %11) #15 - %163 = load ptr, ptr %109, align 8, !tbaa !18 - %164 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %163, i64 %123, i32 1 - store ptr %162, ptr %164, align 8, !tbaa !22 - %165 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 - %.not188 = icmp eq i32 %165, 0 - br i1 %.not188, label %166, label %170 - -166: ; preds = %161 - %167 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %163, i64 %123, i32 2 - store i32 1, ptr %167, align 8, !tbaa !23 - %168 = load i32, ptr %112, align 8, !tbaa !24 - %169 = add i32 %168, 1 - store i32 %169, ptr %112, align 8, !tbaa !24 - br label %170 - -170: ; preds = %161, %166, %158, %156, %154 - %171 = add i32 %.0145.ph, 1 - %172 = load i32, ptr %113, align 4, !tbaa !25 - %173 = add i32 %172, 1 - store i32 %173, ptr %113, align 4, !tbaa !25 - %174 = icmp eq i32 %171, %spec.select195 - br i1 %174, label %.loopexit, label %.outer - -.loopexit: ; preds = %170, %114, %96, %106, %._crit_edge - %175 = call i32 @closedir(ptr noundef nonnull %95) +152: ; preds = %145, %151, %126 + call void @free(ptr noundef nonnull %125) #15 + br label %153 + +153: ; preds = %152, %121 + %154 = trunc i64 %118 to i32 + br i1 %.not184, label %157, label %155 + +155: ; preds = %153 + %156 = call i32 @hwloc_linux_get_tid_last_cpu_location(ptr noundef %0, i32 noundef %154, ptr noundef nonnull %11) #15 + %.not186 = icmp eq i32 %156, 0 + br i1 %.not186, label %159, label %171 + +157: ; preds = %153 + %158 = call i32 @hwloc_linux_get_tid_cpubind(ptr noundef %0, i32 noundef %154, ptr noundef nonnull %11) #15 + %.not185 = icmp eq i32 %158, 0 + br i1 %.not185, label %159, label %171 + +159: ; preds = %157, %155 + %160 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 + %161 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 + %.not187 = icmp eq i32 %161, 0 + br i1 %.not187, label %162, label %171 + +162: ; preds = %159 + %163 = call noalias ptr @hwloc_bitmap_dup(ptr noundef nonnull %11) #15 + %164 = load ptr, ptr %109, align 8, !tbaa !18 + %165 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %164, i64 %123, i32 1 + store ptr %163, ptr %165, align 8, !tbaa !22 + %166 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 + %.not188 = icmp eq i32 %166, 0 + br i1 %.not188, label %167, label %171 + +167: ; preds = %162 + %168 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %164, i64 %123, i32 2 + store i32 1, ptr %168, align 8, !tbaa !23 + %169 = load i32, ptr %112, align 8, !tbaa !24 + %170 = add i32 %169, 1 + store i32 %170, ptr %112, align 8, !tbaa !24 + br label %171 + +171: ; preds = %162, %167, %159, %157, %155 + %172 = add i32 %.0145.ph, 1 + %173 = load i32, ptr %113, align 4, !tbaa !25 + %174 = add i32 %173, 1 + store i32 %174, ptr %113, align 4, !tbaa !25 + %175 = icmp eq i32 %172, %spec.select195 + br i1 %175, label %.loopexit, label %.outer + +.loopexit: ; preds = %171, %114, %96, %106, %._crit_edge + %176 = call i32 @closedir(ptr noundef nonnull %95) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #15 - br label %176 - -176: ; preds = %.loopexit, %91 - call void @free(ptr noundef %92) #15 br label %177 -177: ; preds = %176, %89 - %178 = and i64 %3, 2 - %.not189 = icmp eq i64 %178, 0 - br i1 %.not189, label %181, label %179 - -179: ; preds = %177 - %180 = call i32 @hwloc_get_proc_last_cpu_location(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 - %.not191 = icmp eq i32 %180, 0 - br i1 %.not191, label %183, label %191 - -181: ; preds = %177 - %182 = call i32 @hwloc_get_proc_cpubind(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 - %.not190 = icmp eq i32 %182, 0 - br i1 %.not190, label %183, label %191 - -183: ; preds = %181, %179 - %184 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 - %185 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 - %.not192 = icmp eq i32 %185, 0 - br i1 %.not192, label %186, label %191 - -186: ; preds = %183 - %187 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 - %.not193 = icmp eq i32 %187, 0 - %188 = zext i1 %.not193 to i32 - %189 = getelementptr inbounds nuw i8, ptr %2, i64 1112 - store i32 %188, ptr %189, align 8, !tbaa !26 - %190 = getelementptr inbounds nuw i8, ptr %2, i64 1096 - store ptr %11, ptr %190, align 8, !tbaa !27 - br label %192 +177: ; preds = %.loopexit, %91 + call void @free(ptr noundef %92) #15 + br label %178 + +178: ; preds = %177, %89 + %179 = and i64 %3, 2 + %.not189 = icmp eq i64 %179, 0 + br i1 %.not189, label %182, label %180 + +180: ; preds = %178 + %181 = call i32 @hwloc_get_proc_last_cpu_location(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 + %.not191 = icmp eq i32 %181, 0 + br i1 %.not191, label %184, label %192 + +182: ; preds = %178 + %183 = call i32 @hwloc_get_proc_cpubind(ptr noundef %0, i32 noundef %10, ptr noundef nonnull %11, i32 noundef 0) #15 + %.not190 = icmp eq i32 %183, 0 + br i1 %.not190, label %184, label %192 + +184: ; preds = %182, %180 + %185 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 + %186 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 + %.not192 = icmp eq i32 %186, 0 + br i1 %.not192, label %187, label %192 + +187: ; preds = %184 + %188 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 + %.not193 = icmp eq i32 %188, 0 + %189 = zext i1 %.not193 to i32 + %190 = getelementptr inbounds nuw i8, ptr %2, i64 1112 + store i32 %189, ptr %190, align 8, !tbaa !26 + %191 = getelementptr inbounds nuw i8, ptr %2, i64 1096 + store ptr %11, ptr %191, align 8, !tbaa !27 + br label %193 .sink.split: ; preds = %18, %12 tail call void @free(ptr noundef nonnull %13) #15 - br label %191 + br label %192 -191: ; preds = %.sink.split, %183, %181, %179 +192: ; preds = %.sink.split, %184, %182, %180 call void @hwloc_bitmap_free(ptr noundef nonnull %11) #15 - br label %192 + br label %193 -192: ; preds = %4, %191, %186 - %.0 = phi i32 [ -1, %191 ], [ 0, %186 ], [ -1, %4 ] +193: ; preds = %4, %192, %187 + %.0 = phi i32 [ -1, %192 ], [ 0, %187 ], [ -1, %4 ] ret i32 %.0 } diff --git a/bench/icu/optimized/cecal.ll b/bench/icu/optimized/cecal.ll index a0cbf2453c1..3359915afb2 100644 --- a/bench/icu/optimized/cecal.ll +++ b/bench/icu/optimized/cecal.ll @@ -106,10 +106,11 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i32 @_ZNK6icu_7710CECalendar14handleGetLimitE19UCalendarDateFieldsNS_8Calendar10ELimitTypeE(ptr nonnull readnone align 8 captures(none) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #7 align 2 { %4 = zext i32 %1 to i64 - %5 = zext i32 %2 to i64 - %6 = getelementptr inbounds nuw [24 x [4 x i32]], ptr @_ZN6icu_77L6LIMITSE, i64 0, i64 %4, i64 %5 - %7 = load i32, ptr %6, align 4, !tbaa !6 - ret i32 %7 + %5 = getelementptr inbounds nuw [24 x [4 x i32]], ptr @_ZN6icu_77L6LIMITSE, i64 0, i64 %4 + %6 = zext i32 %2 to i64 + %7 = getelementptr inbounds nuw [4 x i32], ptr %5, i64 0, i64 %6 + %8 = load i32, ptr %7, align 4, !tbaa !6 + ret i32 %8 } ; Function Attrs: mustprogress uwtable diff --git a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll index c9aebacdbee..605a6d0f574 100644 --- a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll +++ b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll @@ -6280,45 +6280,46 @@ define hidden void @"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$ima .lr.ph.i.i: ; preds = %1, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i" %.07.i.i = phi i64 [ %7, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i" ], [ 0, %1 ] + %9 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !1443) - br label %9 + br label %10 -9: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", %.lr.ph.i.i - %.07.i.i.i = phi i64 [ 0, %.lr.ph.i.i ], [ %11, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i" ] - %10 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i.i, i64 %.07.i.i.i - %11 = add nuw nsw i64 %.07.i.i.i, 1 +10: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", %.lr.ph.i.i + %.07.i.i.i = phi i64 [ 0, %.lr.ph.i.i ], [ %12, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i" ] + %11 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i.i + %12 = add nuw nsw i64 %.07.i.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1446) tail call void @llvm.experimental.noalias.scope.decl(metadata !1449) tail call void @llvm.experimental.noalias.scope.decl(metadata !1452) tail call void @llvm.experimental.noalias.scope.decl(metadata !1455) - %12 = load i64, ptr %10, align 8, !alias.scope !1458, !noalias !1461, !noundef !4 - %13 = icmp eq i64 %12, 0 - br i1 %13, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", label %14 + %13 = load i64, ptr %11, align 8, !alias.scope !1458, !noalias !1461, !noundef !4 + %14 = icmp eq i64 %13, 0 + br i1 %14, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", label %15 -14: ; preds = %9 - %15 = shl nuw i64 %12, 4 - %16 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %17 = load ptr, ptr %16, align 8, !alias.scope !1458, !noalias !1461, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %17, i64 noundef %15, i64 noundef 8) #45, !noalias !1463 +15: ; preds = %10 + %16 = shl nuw i64 %13, 4 + %17 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %18 = load ptr, ptr %17, align 8, !alias.scope !1458, !noalias !1461, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %16, i64 noundef 8) #45, !noalias !1463 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i": ; preds = %14, %9 - %18 = icmp eq i64 %11, 5 - br i1 %18, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i", label %9 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i": ; preds = %15, %10 + %19 = icmp eq i64 %12, 5 + br i1 %19, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i", label %10 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i", %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1464) tail call void @llvm.experimental.noalias.scope.decl(metadata !1467) - %19 = load i64, ptr %0, align 8, !alias.scope !1470, !noalias !1473, !noundef !4 - %20 = icmp eq i64 %19, 0 - br i1 %20, label %"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1", label %21 + %20 = load i64, ptr %0, align 8, !alias.scope !1470, !noalias !1473, !noundef !4 + %21 = icmp eq i64 %20, 0 + br i1 %21, label %"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1", label %22 -21: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit" - %22 = mul nuw i64 %19, 200 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %22, i64 noundef 8) #45, !noalias !1475 +22: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit" + %23 = mul nuw i64 %20, 200 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %23, i64 noundef 8) #45, !noalias !1475 br label %"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1" -"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit", %21 +"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit", %22 ret void } @@ -29267,45 +29268,46 @@ define hidden void @"_ZN4core3ptr63drop_in_place$LT$image..codecs..webp..lossles .lr.ph.i.i.i: ; preds = %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h88c6982753044a7aE.exit2", %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i" %.07.i.i.i = phi i64 [ %23, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i" ], [ 0, %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h88c6982753044a7aE.exit2" ] + %25 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %19, i64 0, i64 %.07.i.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !13988) - br label %25 + br label %26 -25: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", %.lr.ph.i.i.i - %.07.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i ], [ %27, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i" ] - %26 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %19, i64 0, i64 %.07.i.i.i, i64 %.07.i.i.i.i - %27 = add nuw nsw i64 %.07.i.i.i.i, 1 +26: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", %.lr.ph.i.i.i + %.07.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i ], [ %28, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i" ] + %27 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %25, i64 0, i64 %.07.i.i.i.i + %28 = add nuw nsw i64 %.07.i.i.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !13991) tail call void @llvm.experimental.noalias.scope.decl(metadata !13994) tail call void @llvm.experimental.noalias.scope.decl(metadata !13997) tail call void @llvm.experimental.noalias.scope.decl(metadata !14000) - %28 = load i64, ptr %26, align 8, !alias.scope !14003, !noalias !14006, !noundef !4 - %29 = icmp eq i64 %28, 0 - br i1 %29, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", label %30 + %29 = load i64, ptr %27, align 8, !alias.scope !14003, !noalias !14006, !noundef !4 + %30 = icmp eq i64 %29, 0 + br i1 %30, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", label %31 -30: ; preds = %25 - %31 = shl nuw i64 %28, 4 - %32 = getelementptr inbounds nuw i8, ptr %26, i64 8 - %33 = load ptr, ptr %32, align 8, !alias.scope !14003, !noalias !14006, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %31, i64 noundef 8) #45, !noalias !14008 +31: ; preds = %26 + %32 = shl nuw i64 %29, 4 + %33 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %34 = load ptr, ptr %33, align 8, !alias.scope !14003, !noalias !14006, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %32, i64 noundef 8) #45, !noalias !14008 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i": ; preds = %30, %25 - %34 = icmp eq i64 %27, 5 - br i1 %34, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i", label %25 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i": ; preds = %31, %26 + %35 = icmp eq i64 %28, 5 + br i1 %35, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i", label %26 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i", %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h88c6982753044a7aE.exit2" tail call void @llvm.experimental.noalias.scope.decl(metadata !14009) tail call void @llvm.experimental.noalias.scope.decl(metadata !14012) - %35 = load i64, ptr %17, align 8, !alias.scope !14015, !noalias !14018, !noundef !4 - %36 = icmp eq i64 %35, 0 - br i1 %36, label %"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit", label %37 + %36 = load i64, ptr %17, align 8, !alias.scope !14015, !noalias !14018, !noundef !4 + %37 = icmp eq i64 %36, 0 + br i1 %37, label %"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit", label %38 -37: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i" - %38 = mul nuw i64 %35, 200 - tail call void @__rust_dealloc(ptr noundef nonnull %19, i64 noundef %38, i64 noundef 8) #45, !noalias !14020 +38: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i" + %39 = mul nuw i64 %36, 200 + tail call void @__rust_dealloc(ptr noundef nonnull %19, i64 noundef %39, i64 noundef 8) #45, !noalias !14020 br label %"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit" -"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i", %37 +"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i", %38 ret void } @@ -34461,31 +34463,32 @@ define hidden void @"_ZN4core3ptr93drop_in_place$LT$$u5b$$u5b$image..codecs..web .lr.ph: ; preds = %2, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit" %.07 = phi i64 [ %4, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit" ], [ 0, %2 ] + %6 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %0, i64 0, i64 %.07 tail call void @llvm.experimental.noalias.scope.decl(metadata !16579) - br label %6 + br label %7 -6: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", %.lr.ph - %.07.i = phi i64 [ 0, %.lr.ph ], [ %8, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i" ] - %7 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %0, i64 0, i64 %.07, i64 %.07.i - %8 = add nuw nsw i64 %.07.i, 1 +7: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", %.lr.ph + %.07.i = phi i64 [ 0, %.lr.ph ], [ %9, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i" ] + %8 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %6, i64 0, i64 %.07.i + %9 = add nuw nsw i64 %.07.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !16582) tail call void @llvm.experimental.noalias.scope.decl(metadata !16585) tail call void @llvm.experimental.noalias.scope.decl(metadata !16588) tail call void @llvm.experimental.noalias.scope.decl(metadata !16591) - %9 = load i64, ptr %7, align 8, !alias.scope !16594, !noalias !16597, !noundef !4 - %10 = icmp eq i64 %9, 0 - br i1 %10, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", label %11 + %10 = load i64, ptr %8, align 8, !alias.scope !16594, !noalias !16597, !noundef !4 + %11 = icmp eq i64 %10, 0 + br i1 %11, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", label %12 -11: ; preds = %6 - %12 = shl nuw i64 %9, 4 - %13 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %14 = load ptr, ptr %13, align 8, !alias.scope !16594, !noalias !16597, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %12, i64 noundef 8) #45, !noalias !16599 +12: ; preds = %7 + %13 = shl nuw i64 %10, 4 + %14 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %15 = load ptr, ptr %14, align 8, !alias.scope !16594, !noalias !16597, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef 8) #45, !noalias !16599 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i": ; preds = %11, %6 - %15 = icmp eq i64 %8, 5 - br i1 %15, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit", label %6 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i": ; preds = %12, %7 + %16 = icmp eq i64 %9, 5 + br i1 %16, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit", label %7 "_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit._crit_edge": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit", %2 ret void @@ -41957,31 +41960,32 @@ define hidden void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops .lr.ph.i: ; preds = %1, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i" %.07.i = phi i64 [ %7, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i" ], [ 0, %1 ] + %9 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i tail call void @llvm.experimental.noalias.scope.decl(metadata !18141) - br label %9 + br label %10 -9: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", %.lr.ph.i - %.07.i.i = phi i64 [ 0, %.lr.ph.i ], [ %11, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i" ] - %10 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i, i64 %.07.i.i - %11 = add nuw nsw i64 %.07.i.i, 1 +10: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", %.lr.ph.i + %.07.i.i = phi i64 [ 0, %.lr.ph.i ], [ %12, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i" ] + %11 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i + %12 = add nuw nsw i64 %.07.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !18144) tail call void @llvm.experimental.noalias.scope.decl(metadata !18147) tail call void @llvm.experimental.noalias.scope.decl(metadata !18150) tail call void @llvm.experimental.noalias.scope.decl(metadata !18153) - %12 = load i64, ptr %10, align 8, !alias.scope !18156, !noalias !18159, !noundef !4 - %13 = icmp eq i64 %12, 0 - br i1 %13, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", label %14 + %13 = load i64, ptr %11, align 8, !alias.scope !18156, !noalias !18159, !noundef !4 + %14 = icmp eq i64 %13, 0 + br i1 %14, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", label %15 -14: ; preds = %9 - %15 = shl nuw i64 %12, 4 - %16 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %17 = load ptr, ptr %16, align 8, !alias.scope !18156, !noalias !18159, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %17, i64 noundef %15, i64 noundef 8) #45, !noalias !18161 +15: ; preds = %10 + %16 = shl nuw i64 %13, 4 + %17 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %18 = load ptr, ptr %17, align 8, !alias.scope !18156, !noalias !18159, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %16, i64 noundef 8) #45, !noalias !18161 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i": ; preds = %14, %9 - %18 = icmp eq i64 %11, 5 - br i1 %18, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i", label %9 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i": ; preds = %15, %10 + %19 = icmp eq i64 %12, 5 + br i1 %19, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i", label %10 "_ZN4core3ptr93drop_in_place$LT$$u5b$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$u5d$$GT$17hacc92d200b6ca886E.llvm.9832446184049035033.exit": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i", %1 ret void diff --git a/bench/jq/optimized/jv_print.ll b/bench/jq/optimized/jv_print.ll index 385dbe7e8ff..d0aa531b975 100644 --- a/bench/jq/optimized/jv_print.ll +++ b/bench/jq/optimized/jv_print.ll @@ -81,7 +81,7 @@ define dso_local range(i32 0, 2) i32 @jq_set_colors(ptr noundef %0) local_unname 23: ; preds = %15 %24 = add nuw nsw i64 %13, 2 - %25 = getelementptr inbounds nuw [8 x [16 x i8]], ptr @color_bufs, i64 0, i64 %.138, i64 %24 + %25 = getelementptr inbounds nuw [16 x i8], ptr %16, i64 0, i64 %24 store i8 109, ptr %25, align 1, !tbaa !11 %26 = getelementptr inbounds nuw [8 x ptr], ptr @color_bufps, i64 0, i64 %.138 store ptr %16, ptr %26, align 8, !tbaa !9 diff --git a/bench/libigl/optimized/canonical_quaternions.ll b/bench/libigl/optimized/canonical_quaternions.ll index dc1c710512b..9b2ac440eb5 100644 --- a/bench/libigl/optimized/canonical_quaternions.ll +++ b/bench/libigl/optimized/canonical_quaternions.ll @@ -9,19 +9,21 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef float @_ZN3igl19CANONICAL_VIEW_QUATIfEET_ii(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = sext i32 %0 to i64 - %4 = sext i32 %1 to i64 - %5 = getelementptr inbounds [24 x [4 x float]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_FE, i64 0, i64 %3, i64 %4 - %6 = load float, ptr %5, align 4, !tbaa !4 - ret float %6 + %4 = getelementptr inbounds [24 x [4 x float]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_FE, i64 0, i64 %3 + %5 = sext i32 %1 to i64 + %6 = getelementptr inbounds [4 x float], ptr %4, i64 0, i64 %5 + %7 = load float, ptr %6, align 4, !tbaa !4 + ret float %7 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef double @_ZN3igl19CANONICAL_VIEW_QUATIdEET_ii(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = sext i32 %0 to i64 - %4 = sext i32 %1 to i64 - %5 = getelementptr inbounds [24 x [4 x double]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_DE, i64 0, i64 %3, i64 %4 - %6 = load double, ptr %5, align 8, !tbaa !8 - ret double %6 + %4 = getelementptr inbounds [24 x [4 x double]], ptr @_ZN3iglL21CANONICAL_VIEW_QUAT_DE, i64 0, i64 %3 + %5 = sext i32 %1 to i64 + %6 = getelementptr inbounds [4 x double], ptr %4, i64 0, i64 %5 + %7 = load double, ptr %6, align 8, !tbaa !8 + ret double %7 } attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/libjpeg-turbo/optimized/jquant1.ll b/bench/libjpeg-turbo/optimized/jquant1.ll index f4b627724bc..4b4c28922c8 100644 --- a/bench/libjpeg-turbo/optimized/jquant1.ll +++ b/bench/libjpeg-turbo/optimized/jquant1.ll @@ -411,10 +411,10 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, store i32 %9, ptr %10, align 4, !tbaa !74 %11 = getelementptr inbounds nuw i8, ptr %0, i64 112 %12 = load i32, ptr %11, align 8, !tbaa !69 - switch i32 %12, label %111 [ + switch i32 %12, label %113 [ i32 0, label %13 i32 1, label %20 - i32 2, label %73 + i32 2, label %75 ] 13: ; preds = %2 @@ -469,7 +469,7 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, br label %40 40: ; preds = %make_odither_array.exit.i, %.lr.ph26.i - %41 = phi i32 [ %34, %.lr.ph26.i ], [ %69, %make_odither_array.exit.i ] + %41 = phi i32 [ %34, %.lr.ph26.i ], [ %71, %make_odither_array.exit.i ] %indvars.iv29.i = phi i64 [ 0, %.lr.ph26.i ], [ %indvars.iv.next30.i, %make_odither_array.exit.i ] %42 = getelementptr inbounds nuw [4 x i32], ptr %37, i64 0, i64 %indvars.iv29.i %43 = load i32, ptr %42, align 4, !tbaa !54 @@ -503,121 +503,123 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, %57 = shl nsw i64 %56, 9 br label %.preheader.i.i -.preheader.i.i: ; preds = %68, %.thread.i - %indvars.iv22.i.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next23.i.i, %68 ] - br label %58 +.preheader.i.i: ; preds = %70, %.thread.i + %indvars.iv22.i.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next23.i.i, %70 ] + %58 = getelementptr inbounds nuw [16 x [16 x i8]], ptr @base_dither_matrix, i64 0, i64 %indvars.iv22.i.i + %59 = getelementptr inbounds nuw [16 x i32], ptr %54, i64 %indvars.iv22.i.i + br label %60 -58: ; preds = %58, %.preheader.i.i - %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %58 ] - %59 = getelementptr inbounds nuw [16 x [16 x i8]], ptr @base_dither_matrix, i64 0, i64 %indvars.iv22.i.i, i64 %indvars.iv.i.i - %60 = load i8, ptr %59, align 1, !tbaa !34 - %61 = zext i8 %60 to i32 - %62 = shl nuw nsw i32 %61, 1 - %63 = sub nsw i32 255, %62 - %narrow.i.i = mul nsw i32 %63, 255 - %64 = sext i32 %narrow.i.i to i64 - %65 = sdiv i64 %64, %57 - %66 = trunc nsw i64 %65 to i32 - %67 = getelementptr inbounds nuw [16 x i32], ptr %54, i64 %indvars.iv22.i.i, i64 %indvars.iv.i.i - store i32 %66, ptr %67, align 4, !tbaa !54 +60: ; preds = %60, %.preheader.i.i + %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %60 ] + %61 = getelementptr inbounds nuw [16 x i8], ptr %58, i64 0, i64 %indvars.iv.i.i + %62 = load i8, ptr %61, align 1, !tbaa !34 + %63 = zext i8 %62 to i32 + %64 = shl nuw nsw i32 %63, 1 + %65 = sub nsw i32 255, %64 + %narrow.i.i = mul nsw i32 %65, 255 + %66 = sext i32 %narrow.i.i to i64 + %67 = sdiv i64 %66, %57 + %68 = trunc nsw i64 %67 to i32 + %69 = getelementptr inbounds nuw [16 x i32], ptr %59, i64 0, i64 %indvars.iv.i.i + store i32 %68, ptr %69, align 4, !tbaa !54 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 16 - br i1 %exitcond.not.i.i, label %68, label %58, !llvm.loop !79 + br i1 %exitcond.not.i.i, label %70, label %60, !llvm.loop !79 -68: ; preds = %58 +70: ; preds = %60 %indvars.iv.next23.i.i = add nuw nsw i64 %indvars.iv22.i.i, 1 %exitcond25.not.i.i = icmp eq i64 %indvars.iv.next23.i.i, 16 br i1 %exitcond25.not.i.i, label %make_odither_array.exit.loopexit.i, label %.preheader.i.i, !llvm.loop !80 -make_odither_array.exit.loopexit.i: ; preds = %68 +make_odither_array.exit.loopexit.i: ; preds = %70 %.pre.i = load i32, ptr %21, align 8, !tbaa !51 br label %make_odither_array.exit.i make_odither_array.exit.i: ; preds = %make_odither_array.exit.loopexit.i, %48 - %69 = phi i32 [ %41, %48 ], [ %.pre.i, %make_odither_array.exit.loopexit.i ] + %71 = phi i32 [ %41, %48 ], [ %.pre.i, %make_odither_array.exit.loopexit.i ] %.1.i = phi ptr [ %50, %48 ], [ %54, %make_odither_array.exit.loopexit.i ] - %70 = getelementptr inbounds nuw [4 x ptr], ptr %38, i64 0, i64 %indvars.iv29.i - store ptr %.1.i, ptr %70, align 8, !tbaa !50 + %72 = getelementptr inbounds nuw [4 x ptr], ptr %38, i64 0, i64 %indvars.iv29.i + store ptr %.1.i, ptr %72, align 8, !tbaa !50 %indvars.iv.next30.i = add nuw nsw i64 %indvars.iv29.i, 1 - %71 = sext i32 %69 to i64 - %72 = icmp slt i64 %indvars.iv.next30.i, %71 - br i1 %72, label %40, label %create_odither_tables.exit, !llvm.loop !81 - -73: ; preds = %2 - %74 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr @quantize_fs_dither, ptr %74, align 8, !tbaa !75 - %75 = getelementptr inbounds nuw i8, ptr %4, i64 152 - store i32 0, ptr %75, align 8, !tbaa !82 - %76 = getelementptr inbounds nuw i8, ptr %4, i64 120 - %77 = load ptr, ptr %76, align 8, !tbaa !48 - %78 = icmp eq ptr %77, null - br i1 %78, label %79, label %.alloc_fs_workspace.exit_crit_edge - -.alloc_fs_workspace.exit_crit_edge: ; preds = %73 + %73 = sext i32 %71 to i64 + %74 = icmp slt i64 %indvars.iv.next30.i, %73 + br i1 %74, label %40, label %create_odither_tables.exit, !llvm.loop !81 + +75: ; preds = %2 + %76 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr @quantize_fs_dither, ptr %76, align 8, !tbaa !75 + %77 = getelementptr inbounds nuw i8, ptr %4, i64 152 + store i32 0, ptr %77, align 8, !tbaa !82 + %78 = getelementptr inbounds nuw i8, ptr %4, i64 120 + %79 = load ptr, ptr %78, align 8, !tbaa !48 + %80 = icmp eq ptr %79, null + br i1 %80, label %81, label %.alloc_fs_workspace.exit_crit_edge + +.alloc_fs_workspace.exit_crit_edge: ; preds = %75 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 144 %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !51 br label %alloc_fs_workspace.exit -79: ; preds = %73 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %81 = load i32, ptr %80, align 8, !tbaa !70 - %82 = add i32 %81, 2 - %83 = zext i32 %82 to i64 - %84 = shl nuw nsw i64 %83, 1 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %86 = load i32, ptr %85, align 8, !tbaa !51 - %87 = icmp sgt i32 %86, 0 - br i1 %87, label %.lr.ph.i30, label %create_odither_tables.exit - -.lr.ph.i30: ; preds = %79 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %89 - -89: ; preds = %89, %.lr.ph.i30 - %indvars.iv.i31 = phi i64 [ 0, %.lr.ph.i30 ], [ %indvars.iv.next.i32, %89 ] - %90 = load ptr, ptr %88, align 8, !tbaa !39 - %91 = getelementptr inbounds nuw i8, ptr %90, i64 8 - %92 = load ptr, ptr %91, align 8, !tbaa !71 - %93 = tail call ptr %92(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %84) #7 - %94 = getelementptr inbounds nuw [4 x ptr], ptr %76, i64 0, i64 %indvars.iv.i31 - store ptr %93, ptr %94, align 8, !tbaa !48 +81: ; preds = %75 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %83 = load i32, ptr %82, align 8, !tbaa !70 + %84 = add i32 %83, 2 + %85 = zext i32 %84 to i64 + %86 = shl nuw nsw i64 %85, 1 + %87 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %88 = load i32, ptr %87, align 8, !tbaa !51 + %89 = icmp sgt i32 %88, 0 + br i1 %89, label %.lr.ph.i30, label %create_odither_tables.exit + +.lr.ph.i30: ; preds = %81 + %90 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %91 + +91: ; preds = %91, %.lr.ph.i30 + %indvars.iv.i31 = phi i64 [ 0, %.lr.ph.i30 ], [ %indvars.iv.next.i32, %91 ] + %92 = load ptr, ptr %90, align 8, !tbaa !39 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 8 + %94 = load ptr, ptr %93, align 8, !tbaa !71 + %95 = tail call ptr %94(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %86) #7 + %96 = getelementptr inbounds nuw [4 x ptr], ptr %78, i64 0, i64 %indvars.iv.i31 + store ptr %95, ptr %96, align 8, !tbaa !48 %indvars.iv.next.i32 = add nuw nsw i64 %indvars.iv.i31, 1 - %95 = load i32, ptr %85, align 8, !tbaa !51 - %96 = sext i32 %95 to i64 - %97 = icmp slt i64 %indvars.iv.next.i32, %96 - br i1 %97, label %89, label %alloc_fs_workspace.exit, !llvm.loop !72 - -alloc_fs_workspace.exit: ; preds = %89, %.alloc_fs_workspace.exit_crit_edge - %98 = phi i32 [ %.pre, %.alloc_fs_workspace.exit_crit_edge ], [ %95, %89 ] - %99 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %100 = load i32, ptr %99, align 8, !tbaa !70 - %101 = add i32 %100, 2 - %102 = zext i32 %101 to i64 - %103 = shl nuw nsw i64 %102, 1 - %104 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %105 = icmp sgt i32 %98, 0 - br i1 %105, label %.lr.ph, label %create_odither_tables.exit + %97 = load i32, ptr %87, align 8, !tbaa !51 + %98 = sext i32 %97 to i64 + %99 = icmp slt i64 %indvars.iv.next.i32, %98 + br i1 %99, label %91, label %alloc_fs_workspace.exit, !llvm.loop !72 + +alloc_fs_workspace.exit: ; preds = %91, %.alloc_fs_workspace.exit_crit_edge + %100 = phi i32 [ %.pre, %.alloc_fs_workspace.exit_crit_edge ], [ %97, %91 ] + %101 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %102 = load i32, ptr %101, align 8, !tbaa !70 + %103 = add i32 %102, 2 + %104 = zext i32 %103 to i64 + %105 = shl nuw nsw i64 %104, 1 + %106 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %107 = icmp sgt i32 %100, 0 + br i1 %107, label %.lr.ph, label %create_odither_tables.exit .lr.ph: ; preds = %alloc_fs_workspace.exit, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %alloc_fs_workspace.exit ] - %106 = getelementptr inbounds nuw [4 x ptr], ptr %76, i64 0, i64 %indvars.iv - %107 = load ptr, ptr %106, align 8, !tbaa !48 - tail call void @jzero_far(ptr noundef %107, i64 noundef %103) #7 + %108 = getelementptr inbounds nuw [4 x ptr], ptr %78, i64 0, i64 %indvars.iv + %109 = load ptr, ptr %108, align 8, !tbaa !48 + tail call void @jzero_far(ptr noundef %109, i64 noundef %105) #7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %108 = load i32, ptr %104, align 8, !tbaa !51 - %109 = sext i32 %108 to i64 - %110 = icmp slt i64 %indvars.iv.next, %109 - br i1 %110, label %.lr.ph, label %create_odither_tables.exit, !llvm.loop !83 - -111: ; preds = %2 - %112 = load ptr, ptr %0, align 8, !tbaa !30 - %113 = getelementptr inbounds nuw i8, ptr %112, i64 40 - store i32 48, ptr %113, align 8, !tbaa !31 - %114 = load ptr, ptr %112, align 8, !tbaa !35 - tail call void %114(ptr noundef nonnull %0) #7 + %110 = load i32, ptr %106, align 8, !tbaa !51 + %111 = sext i32 %110 to i64 + %112 = icmp slt i64 %indvars.iv.next, %111 + br i1 %112, label %.lr.ph, label %create_odither_tables.exit, !llvm.loop !83 + +113: ; preds = %2 + %114 = load ptr, ptr %0, align 8, !tbaa !30 + %115 = getelementptr inbounds nuw i8, ptr %114, i64 40 + store i32 48, ptr %115, align 8, !tbaa !31 + %116 = load ptr, ptr %114, align 8, !tbaa !35 + tail call void %116(ptr noundef nonnull %0) #7 br label %create_odither_tables.exit -create_odither_tables.exit: ; preds = %.lr.ph, %make_odither_array.exit.i, %79, %alloc_fs_workspace.exit, %33, %29, %18, %19, %111 +create_odither_tables.exit: ; preds = %.lr.ph, %make_odither_array.exit.i, %81, %alloc_fs_workspace.exit, %33, %29, %18, %19, %113 ret void } diff --git a/bench/libwebp/optimized/filter_enc.ll b/bench/libwebp/optimized/filter_enc.ll index de9580f7ff3..fe0861de3a4 100644 --- a/bench/libwebp/optimized/filter_enc.ll +++ b/bench/libwebp/optimized/filter_enc.ll @@ -19,11 +19,12 @@ target triple = "x86_64-pc-linux-gnu" define hidden range(i32 0, 256) i32 @VP8FilterStrengthFromDelta(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = tail call i32 @llvm.smin.i32(i32 %1, i32 63) %4 = sext i32 %0 to i64 - %5 = sext i32 %3 to i64 - %6 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %4, i64 %5 - %7 = load i8, ptr %6, align 1, !tbaa !3 - %8 = zext i8 %7 to i32 - ret i32 %8 + %5 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %4 + %6 = sext i32 %3 to i64 + %7 = getelementptr inbounds [64 x i8], ptr %5, i64 0, i64 %6 + %8 = load i8, ptr %7, align 1, !tbaa !3 + %9 = zext i8 %8 to i32 + ret i32 %9 } ; Function Attrs: nounwind uwtable @@ -141,12 +142,12 @@ GetMBSSIM.exit: ; preds = %47 %53 = getelementptr inbounds nuw i8, ptr %0, i64 24 br label %54 -54: ; preds = %.lr.ph, %115 - %.057 = phi i32 [ %16, %.lr.ph ], [ %116, %115 ] +54: ; preds = %.lr.ph, %116 + %.057 = phi i32 [ %16, %.lr.ph ], [ %117, %116 ] %55 = add nsw i32 %.057, %13 %56 = add i32 %55, -64 %or.cond = icmp ult i32 %56, -63 - br i1 %or.cond, label %115, label %57 + br i1 %or.cond, label %116, label %57 57: ; preds = %54 %58 = load ptr, ptr %2, align 8, !tbaa !18 @@ -258,19 +259,20 @@ DoFilter.exit: ; preds = %73, %76 GetMBSSIM.exit51: ; preds = %108 %110 = load ptr, ptr %19, align 8, !tbaa !6 - %111 = zext nneg i32 %55 to i64 - %112 = getelementptr inbounds nuw [4 x [64 x double]], ptr %110, i64 0, i64 %10, i64 %111 - %113 = load double, ptr %112, align 8, !tbaa !16 - %114 = fadd double %106, %113 - store double %114, ptr %112, align 8, !tbaa !16 - br label %115 - -115: ; preds = %54, %GetMBSSIM.exit51 - %116 = add nsw i32 %.057, %18 - %.not34 = icmp sgt i32 %116, %15 + %111 = getelementptr inbounds nuw [4 x [64 x double]], ptr %110, i64 0, i64 %10 + %112 = zext nneg i32 %55 to i64 + %113 = getelementptr inbounds nuw [64 x double], ptr %111, i64 0, i64 %112 + %114 = load double, ptr %113, align 8, !tbaa !16 + %115 = fadd double %106, %114 + store double %115, ptr %113, align 8, !tbaa !16 + br label %116 + +116: ; preds = %54, %GetMBSSIM.exit51 + %117 = add nsw i32 %.057, %18 + %.not34 = icmp sgt i32 %117, %15 br i1 %.not34, label %.loopexit, label %54, !llvm.loop !50 -.loopexit: ; preds = %115, %GetMBSSIM.exit, %1 +.loopexit: ; preds = %116, %GetMBSSIM.exit, %1 ret void } @@ -298,7 +300,7 @@ define hidden void @VP8AdjustFilterStrength(ptr noundef readonly captures(none) %indvars.iv = phi i64 [ 1, %7 ], [ %indvars.iv.next, %11 ] %.03647 = phi i32 [ 0, %7 ], [ %.1, %11 ] %.04046 = phi double [ %10, %7 ], [ %.141, %11 ] - %12 = getelementptr inbounds nuw [4 x [64 x double]], ptr %5, i64 0, i64 %indvars.iv53, i64 %indvars.iv + %12 = getelementptr inbounds nuw [64 x double], ptr %8, i64 0, i64 %indvars.iv %13 = load double, ptr %12, align 8, !tbaa !16 %14 = fcmp ogt double %13, %.04046 %.141 = select i1 %14, double %13, double %.04046 @@ -328,46 +330,47 @@ define hidden void @VP8AdjustFilterStrength(ptr noundef readonly captures(none) %24 = getelementptr inbounds nuw i8, ptr %3, i64 24 %25 = load i32, ptr %24, align 8, !tbaa !54 %26 = sext i32 %25 to i64 - br label %27 - -27: ; preds = %.preheader, %45 - %indvars.iv57 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next58, %45 ] - %.03850 = phi i32 [ 0, %.preheader ], [ %spec.select, %45 ] - %28 = getelementptr inbounds nuw [4 x %struct.VP8SegmentInfo], ptr %23, i64 0, i64 %indvars.iv57 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 688 - %30 = load i32, ptr %29, align 8, !tbaa !55 - %31 = getelementptr inbounds nuw i8, ptr %28, i64 226 - %32 = load i16, ptr %31, align 2, !tbaa !56 - %33 = zext i16 %32 to i32 - %34 = mul nsw i32 %30, %33 - %35 = ashr i32 %34, 3 - %36 = tail call i32 @llvm.smin.i32(i32 %35, i32 63) - %37 = sext i32 %36 to i64 - %38 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %26, i64 %37 - %39 = load i8, ptr %38, align 1, !tbaa !3 - %40 = zext i8 %39 to i32 - %41 = getelementptr inbounds nuw i8, ptr %28, i64 684 - %42 = load i32, ptr %41, align 4, !tbaa !20 - %43 = icmp slt i32 %42, %40 - br i1 %43, label %44, label %45 - -44: ; preds = %27 - store i32 %40, ptr %41, align 4, !tbaa !20 - br label %45 - -45: ; preds = %44, %27 - %46 = phi i32 [ %40, %44 ], [ %42, %27 ] - %spec.select = tail call i32 @llvm.smax.i32(i32 %.03850, i32 %46) + %27 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %26 + br label %28 + +28: ; preds = %.preheader, %46 + %indvars.iv57 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next58, %46 ] + %.03850 = phi i32 [ 0, %.preheader ], [ %spec.select, %46 ] + %29 = getelementptr inbounds nuw [4 x %struct.VP8SegmentInfo], ptr %23, i64 0, i64 %indvars.iv57 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 688 + %31 = load i32, ptr %30, align 8, !tbaa !55 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 226 + %33 = load i16, ptr %32, align 2, !tbaa !56 + %34 = zext i16 %33 to i32 + %35 = mul nsw i32 %31, %34 + %36 = ashr i32 %35, 3 + %37 = tail call i32 @llvm.smin.i32(i32 %36, i32 63) + %38 = sext i32 %37 to i64 + %39 = getelementptr inbounds [64 x i8], ptr %27, i64 0, i64 %38 + %40 = load i8, ptr %39, align 1, !tbaa !3 + %41 = zext i8 %40 to i32 + %42 = getelementptr inbounds nuw i8, ptr %29, i64 684 + %43 = load i32, ptr %42, align 4, !tbaa !20 + %44 = icmp slt i32 %43, %41 + br i1 %44, label %45, label %46 + +45: ; preds = %28 + store i32 %41, ptr %42, align 4, !tbaa !20 + br label %46 + +46: ; preds = %45, %28 + %47 = phi i32 [ %41, %45 ], [ %43, %28 ] + %spec.select = tail call i32 @llvm.smax.i32(i32 %.03850, i32 %47) %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 4 - br i1 %exitcond60.not, label %47, label %27, !llvm.loop !58 + br i1 %exitcond60.not, label %48, label %28, !llvm.loop !58 -47: ; preds = %45 - %48 = getelementptr inbounds nuw i8, ptr %3, i64 20 - store i32 %spec.select, ptr %48, align 4, !tbaa !59 +48: ; preds = %46 + %49 = getelementptr inbounds nuw i8, ptr %3, i64 20 + store i32 %spec.select, ptr %49, align 4, !tbaa !59 br label %.loopexit -.loopexit: ; preds = %16, %18, %47 +.loopexit: ; preds = %16, %18, %48 ret void } diff --git a/bench/libwebp/optimized/vp8_dec.ll b/bench/libwebp/optimized/vp8_dec.ll index e502243291f..1b6fb64f0d3 100644 --- a/bench/libwebp/optimized/vp8_dec.ll +++ b/bench/libwebp/optimized/vp8_dec.ll @@ -1196,7 +1196,7 @@ ParseResiduals.exit: ; preds = %145, %151 %168 = getelementptr inbounds nuw i8, ptr %0, i64 2920 %169 = load i32, ptr %168, align 8, !tbaa !73 %170 = icmp sgt i32 %169, 0 - br i1 %170, label %171, label %190 + br i1 %170, label %171, label %191 171: ; preds = %167 %172 = getelementptr inbounds nuw i8, ptr %0, i64 2840 @@ -1208,25 +1208,26 @@ ParseResiduals.exit: ; preds = %145, %151 %178 = getelementptr inbounds nuw i8, ptr %13, i64 798 %179 = load i8, ptr %178, align 2, !tbaa !82 %180 = zext i8 %179 to i64 - %181 = getelementptr inbounds nuw i8, ptr %13, i64 768 - %182 = load i8, ptr %181, align 4, !tbaa !83 - %183 = zext i8 %182 to i64 - %184 = getelementptr inbounds nuw [4 x [2 x %struct.VP8FInfo]], ptr %177, i64 0, i64 %180, i64 %183 - %185 = load i32, ptr %184, align 4 - store i32 %185, ptr %176, align 1 - %186 = getelementptr inbounds nuw i8, ptr %176, i64 2 - %187 = lshr i32 %185, 16 - %188 = trunc i32 %187 to i8 - %189 = or i8 %.0, %188 - store i8 %189, ptr %186, align 1, !tbaa !100 - br label %190 - -190: ; preds = %171, %167 - %191 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %192 = load i32, ptr %191, align 8, !tbaa !66 - %.not32 = icmp eq i32 %192, 0 - %193 = zext i1 %.not32 to i32 - ret i32 %193 + %181 = getelementptr inbounds nuw [4 x [2 x %struct.VP8FInfo]], ptr %177, i64 0, i64 %180 + %182 = getelementptr inbounds nuw i8, ptr %13, i64 768 + %183 = load i8, ptr %182, align 4, !tbaa !83 + %184 = zext i8 %183 to i64 + %185 = getelementptr inbounds nuw [2 x %struct.VP8FInfo], ptr %181, i64 0, i64 %184 + %186 = load i32, ptr %185, align 4 + store i32 %186, ptr %176, align 1 + %187 = getelementptr inbounds nuw i8, ptr %176, i64 2 + %188 = lshr i32 %186, 16 + %189 = trunc i32 %188 to i8 + %190 = or i8 %.0, %189 + store i8 %190, ptr %187, align 1, !tbaa !100 + br label %191 + +191: ; preds = %171, %167 + %192 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %193 = load i32, ptr %192, align 8, !tbaa !66 + %.not32 = icmp eq i32 %193, 0 + %194 = zext i1 %.not32 to i32 + ret i32 %194 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable diff --git a/bench/lief/optimized/aria.ll b/bench/lief/optimized/aria.ll index e4bdd2ad084..7b054f83804 100644 --- a/bench/lief/optimized/aria.ll +++ b/bench/lief/optimized/aria.ll @@ -651,86 +651,88 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture %8 = zext i8 %6 to i64 br label %.preheader40 -.preheader40: ; preds = %.preheader40.lr.ph, %15 - %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %15 ] - %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %15 ] - br label %10 - -.preheader: ; preds = %15 +.preheader40: ; preds = %.preheader40.lr.ph, %17 + %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %17 ] + %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %17 ] + %9 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47 + %10 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49 + br label %12 + +.preheader: ; preds = %17 %.not58 = icmp eq i8 %6, 1 br i1 %.not58, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %.preheader - %9 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 4 %wide.trip.count = zext i8 %6 to i64 - br label %17 + br label %19 -10: ; preds = %.preheader40, %10 - %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %10 ] - %11 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47, i64 %indvars.iv - %12 = load i32, ptr %11, align 4, !tbaa !3 - %13 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49, i64 %indvars.iv +12: ; preds = %.preheader40, %12 + %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %12 ] + %13 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv %14 = load i32, ptr %13, align 4, !tbaa !3 - store i32 %14, ptr %11, align 4, !tbaa !3 - store i32 %12, ptr %13, align 4, !tbaa !3 + %15 = getelementptr inbounds nuw [4 x i32], ptr %10, i64 0, i64 %indvars.iv + %16 = load i32, ptr %15, align 4, !tbaa !3 + store i32 %16, ptr %13, align 4, !tbaa !3 + store i32 %14, ptr %15, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %15, label %10, !llvm.loop !13 + br i1 %exitcond.not, label %17, label %12, !llvm.loop !13 -15: ; preds = %10 +17: ; preds = %12 %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 %indvars.iv.next50 = add nsw i64 %indvars.iv49, -1 - %16 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 - br i1 %16, label %.preheader40, label %.preheader, !llvm.loop !14 - -17: ; preds = %.lr.ph, %17 - %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %17 ] - %18 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv54 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 4 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %21 = getelementptr inbounds nuw i8, ptr %18, i64 12 - %22 = load i32, ptr %19, align 4, !tbaa !3 - %23 = load i32, ptr %18, align 4, !tbaa !3 + %18 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 + br i1 %18, label %.preheader40, label %.preheader, !llvm.loop !14 + +19: ; preds = %.lr.ph, %19 + %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %19 ] + %20 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %11, i64 0, i64 %indvars.iv54 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 4 + %22 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %23 = getelementptr inbounds nuw i8, ptr %20, i64 12 %24 = load i32, ptr %21, align 4, !tbaa !3 %25 = load i32, ptr %20, align 4, !tbaa !3 - %26 = tail call i32 @llvm.bswap.i32(i32 %25) - %27 = tail call i32 @llvm.fshl.i32(i32 %26, i32 %26, i32 16) - %28 = tail call i32 @llvm.bswap.i32(i32 %24) - %29 = xor i32 %27, %22 - %30 = tail call i32 @llvm.fshl.i32(i32 %23, i32 %23, i32 16) - %31 = tail call i32 @llvm.bswap.i32(i32 %29) - %32 = tail call i32 @llvm.fshl.i32(i32 %31, i32 %31, i32 16) - %33 = xor i32 %30, %32 - %34 = xor i32 %33, %28 - %35 = xor i32 %27, %24 - %36 = tail call i32 @llvm.fshl.i32(i32 %35, i32 %35, i32 16) - %37 = tail call i32 @llvm.bswap.i32(i32 %22) - %38 = xor i32 %30, %37 - %39 = xor i32 %36, %23 - %40 = xor i32 %39, %34 - store i32 %40, ptr %19, align 4, !tbaa !3 - %41 = tail call i32 @llvm.fshl.i32(i32 %36, i32 %36, i32 16) - %42 = xor i32 %34, %41 - %43 = tail call i32 @llvm.bswap.i32(i32 %42) - %44 = xor i32 %43, %22 - %45 = xor i32 %43, %22 - %46 = tail call i32 @llvm.fshl.i32(i32 %44, i32 %45, i32 16) - store i32 %46, ptr %18, align 4, !tbaa !3 - %47 = tail call i32 @llvm.fshl.i32(i32 %34, i32 %34, i32 16) - %48 = tail call i32 @llvm.bswap.i32(i32 %34) - %49 = xor i32 %38, %48 - %50 = xor i32 %49, %27 - store i32 %50, ptr %21, align 4, !tbaa !3 - %51 = tail call i32 @llvm.bswap.i32(i32 %38) - %52 = xor i32 %51, %47 - %53 = xor i32 %52, %28 - store i32 %53, ptr %20, align 4, !tbaa !3 + %26 = load i32, ptr %23, align 4, !tbaa !3 + %27 = load i32, ptr %22, align 4, !tbaa !3 + %28 = tail call i32 @llvm.bswap.i32(i32 %27) + %29 = tail call i32 @llvm.fshl.i32(i32 %28, i32 %28, i32 16) + %30 = tail call i32 @llvm.bswap.i32(i32 %26) + %31 = xor i32 %29, %24 + %32 = tail call i32 @llvm.fshl.i32(i32 %25, i32 %25, i32 16) + %33 = tail call i32 @llvm.bswap.i32(i32 %31) + %34 = tail call i32 @llvm.fshl.i32(i32 %33, i32 %33, i32 16) + %35 = xor i32 %32, %34 + %36 = xor i32 %35, %30 + %37 = xor i32 %29, %26 + %38 = tail call i32 @llvm.fshl.i32(i32 %37, i32 %37, i32 16) + %39 = tail call i32 @llvm.bswap.i32(i32 %24) + %40 = xor i32 %32, %39 + %41 = xor i32 %38, %25 + %42 = xor i32 %41, %36 + store i32 %42, ptr %21, align 4, !tbaa !3 + %43 = tail call i32 @llvm.fshl.i32(i32 %38, i32 %38, i32 16) + %44 = xor i32 %36, %43 + %45 = tail call i32 @llvm.bswap.i32(i32 %44) + %46 = xor i32 %45, %24 + %47 = xor i32 %45, %24 + %48 = tail call i32 @llvm.fshl.i32(i32 %46, i32 %47, i32 16) + store i32 %48, ptr %20, align 4, !tbaa !3 + %49 = tail call i32 @llvm.fshl.i32(i32 %36, i32 %36, i32 16) + %50 = tail call i32 @llvm.bswap.i32(i32 %36) + %51 = xor i32 %40, %50 + %52 = xor i32 %51, %29 + store i32 %52, ptr %23, align 4, !tbaa !3 + %53 = tail call i32 @llvm.bswap.i32(i32 %40) + %54 = xor i32 %53, %49 + %55 = xor i32 %54, %30 + store i32 %55, ptr %22, align 4, !tbaa !3 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 %exitcond57.not = icmp eq i64 %indvars.iv.next55, %wide.trip.count - br i1 %exitcond57.not, label %.loopexit, label %17, !llvm.loop !15 + br i1 %exitcond57.not, label %.loopexit, label %19, !llvm.loop !15 -.loopexit: ; preds = %17, %5, %.preheader, %3 - %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %17 ] +.loopexit: ; preds = %19, %5, %.preheader, %3 + %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %19 ] ret i32 %.0 } diff --git a/bench/linux/optimized/forcedeth.ll b/bench/linux/optimized/forcedeth.ll index 8778df1144f..f86c45cf5dd 100644 --- a/bench/linux/optimized/forcedeth.ll +++ b/bench/linux/optimized/forcedeth.ll @@ -8228,12 +8228,14 @@ define internal fastcc void @nv_gear_backoff_reseed(ptr %.3120.val) unnamed_addr %52 = load i32, ptr %4, align 4 %53 = zext i32 %52 to i64 %54 = add nsw i64 %51, -1 - %55 = getelementptr [8 x [15 x i32]], ptr @main_seedset, i64 0, i64 %53, i64 %54 + %.split = getelementptr [8 x [15 x i32]], ptr @main_seedset, i64 0, i64 %53 + %55 = getelementptr [15 x i32], ptr %.split, i64 0, i64 %54 %56 = load i32, ptr %55, align 4 %57 = and i32 %56, 1023 %58 = trunc i64 %51 to i32 %59 = shl i32 %58, 24 - %60 = getelementptr [8 x [15 x i32]], ptr @gear_seedset, i64 0, i64 %53, i64 %54 + %.split1 = getelementptr [8 x [15 x i32]], ptr @gear_seedset, i64 0, i64 %53 + %60 = getelementptr [15 x i32], ptr %.split1, i64 0, i64 %54 %61 = load i32, ptr %60, align 4 %62 = shl i32 %61, 12 %63 = and i32 %62, 4190208 diff --git a/bench/linux/optimized/intel_guc_submission.ll b/bench/linux/optimized/intel_guc_submission.ll index b3e42a4b432..498a88533ab 100644 --- a/bench/linux/optimized/intel_guc_submission.ll +++ b/bench/linux/optimized/intel_guc_submission.ll @@ -2236,7 +2236,7 @@ define dso_local noundef range(i32 -12, 1) i32 @intel_guc_submission_setup(ptr n 147: ; preds = %.preheader %148 = add nuw nsw i64 %174, 1 - %149 = getelementptr [6 x [9 x ptr]], ptr %141, i64 0, i64 %143, i64 %148 + %149 = getelementptr [9 x ptr], ptr %144, i64 0, i64 %148 %150 = load ptr, ptr %149, align 8 %151 = icmp eq ptr %150, null br i1 %151, label %.preheader, label %.loopexit, !llvm.loop !46 @@ -5511,7 +5511,8 @@ define dso_local ptr @intel_guc_lookup_engine(ptr noundef readonly captures(none %7 = getelementptr i8, ptr %0, i64 3624 %8 = zext i8 %6 to i64 %9 = zext i8 %2 to i64 - %10 = getelementptr [6 x [9 x ptr]], ptr %7, i64 0, i64 %8, i64 %9 + %.split = getelementptr [6 x [9 x ptr]], ptr %7, i64 0, i64 %8 + %10 = getelementptr [9 x ptr], ptr %.split, i64 0, i64 %9 %11 = load ptr, ptr %10, align 8 ret ptr %11 } @@ -5553,7 +5554,8 @@ define dso_local noundef range(i32 -71, 1) i32 @intel_guc_engine_failure_process %27 = zext i8 %25 to i64 %28 = and i32 %19, 255 %29 = zext nneg i32 %28 to i64 - %30 = getelementptr [6 x [9 x ptr]], ptr %26, i64 0, i64 %27, i64 %29 + %.split = getelementptr [6 x [9 x ptr]], ptr %26, i64 0, i64 %27 + %30 = getelementptr [9 x ptr], ptr %.split, i64 0, i64 %29 %31 = load ptr, ptr %30, align 8 %32 = icmp eq ptr %31, null %33 = getelementptr i8, ptr %0, i64 -632 diff --git a/bench/llvm/optimized/PreISelIntrinsicLowering.ll b/bench/llvm/optimized/PreISelIntrinsicLowering.ll index aff67db9a3e..878fc042d84 100644 --- a/bench/llvm/optimized/PreISelIntrinsicLowering.ll +++ b/bench/llvm/optimized/PreISelIntrinsicLowering.ll @@ -1855,8 +1855,8 @@ _ZL17lowerLoadRelativeRN4llvm8FunctionE.exit: ; preds = %518, %427, %431 br i1 %645, label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", label %.lr.ph.i56 .lr.ph.i56: ; preds = %642, %.thread.i60 - %646 = phi ptr [ %696, %.thread.i60 ], [ %644, %642 ] - %.029.i = phi ptr [ %695, %.thread.i60 ], [ null, %642 ] + %646 = phi ptr [ %697, %.thread.i60 ], [ %644, %642 ] + %.029.i = phi ptr [ %696, %.thread.i60 ], [ null, %642 ] %.01528.i = phi i1 [ %.11623.i, %.thread.i60 ], [ false, %642 ] %.not.i57 = icmp eq ptr %.029.i, null br i1 %.not.i57, label %.critedge2.i59, label %647 @@ -1906,7 +1906,7 @@ _ZL17lowerLoadRelativeRN4llvm8FunctionE.exit: ; preds = %518, %427, %431 %680 = call { i16, ptr } @_ZN4llvm3EVT6getEVTEPNS_4TypeEb(ptr noundef nonnull %663, i1 noundef zeroext false) #17 %681 = extractvalue { i16, ptr } %680, 0 %.not.i.i.i.i62 = icmp eq i16 %681, 0 - br i1 %.not.i.i.i.i62, label %692, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i + br i1 %.not.i.i.i.i62, label %693, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i: ; preds = %668 %682 = getelementptr inbounds nuw i8, ptr %677, i64 104 @@ -1914,7 +1914,7 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i: ; preds = %668 %684 = getelementptr inbounds nuw [234 x ptr], ptr %682, i64 0, i64 %683 %685 = load ptr, ptr %684, align 8, !tbaa !210 %.not.i.i.i = icmp eq ptr %685, null - br i1 %.not.i.i.i, label %692, label %686 + br i1 %.not.i.i.i, label %693, label %686 686: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i %.not.i7.i.i.i = icmp ult i32 %679, 496 @@ -1923,33 +1923,34 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i: ; preds = %668 _ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i: ; preds = %686 %687 = getelementptr inbounds nuw i8, ptr %677, i64 5486 %688 = zext nneg i32 %679 to i64 - %689 = getelementptr inbounds nuw [234 x [496 x i8]], ptr %687, i64 0, i64 %683, i64 %688 - %690 = load i8, ptr %689, align 1, !tbaa !212 - %691 = icmp eq i8 %690, 2 - br i1 %691, label %692, label %.thread.i60 - -692: ; preds = %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i, %668 - %693 = call noundef zeroext i1 @_ZN4llvm31lowerUnaryVectorIntrinsicAsLoopERNS_6ModuleEPNS_8CallInstE(ptr noundef nonnull align 8 dereferenceable(841) %1, ptr noundef nonnull %652) #17 - %694 = or i1 %.01528.i, %693 - %spec.select.i63 = select i1 %693, ptr %.029.i, ptr %650 + %689 = getelementptr inbounds nuw [234 x [496 x i8]], ptr %687, i64 0, i64 %683 + %690 = getelementptr inbounds nuw [496 x i8], ptr %689, i64 0, i64 %688 + %691 = load i8, ptr %690, align 1, !tbaa !212 + %692 = icmp eq i8 %691, 2 + br i1 %692, label %693, label %.thread.i60 + +693: ; preds = %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i, %668 + %694 = call noundef zeroext i1 @_ZN4llvm31lowerUnaryVectorIntrinsicAsLoopERNS_6ModuleEPNS_8CallInstE(ptr noundef nonnull align 8 dereferenceable(841) %1, ptr noundef nonnull %652) #17 + %695 = or i1 %.01528.i, %694 + %spec.select.i63 = select i1 %694, ptr %.029.i, ptr %650 br label %.thread.i60 -.thread.i60: ; preds = %692, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %686, %654, %.critedge2.i59 - %.11623.i = phi i1 [ %.01528.i, %.critedge2.i59 ], [ %.01528.i, %654 ], [ %.01528.i, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %.01528.i, %686 ], [ %694, %692 ] - %695 = phi ptr [ %650, %.critedge2.i59 ], [ %650, %654 ], [ %650, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %650, %686 ], [ %spec.select.i63, %692 ] - %696 = load ptr, ptr %643, align 8, !tbaa !102 - %697 = icmp eq ptr %696, null - br i1 %697, label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", label %.lr.ph.i56, !llvm.loop !214 +.thread.i60: ; preds = %693, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %686, %654, %.critedge2.i59 + %.11623.i = phi i1 [ %.01528.i, %.critedge2.i59 ], [ %.01528.i, %654 ], [ %.01528.i, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %.01528.i, %686 ], [ %695, %693 ] + %696 = phi ptr [ %650, %.critedge2.i59 ], [ %650, %654 ], [ %650, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %650, %686 ], [ %spec.select.i63, %693 ] + %697 = load ptr, ptr %643, align 8, !tbaa !102 + %698 = icmp eq ptr %697, null + br i1 %698, label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", label %.lr.ph.i56, !llvm.loop !214 "_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit": ; preds = %647, %.thread.i60, %642 %.015.lcssa.i61 = phi i1 [ false, %642 ], [ %.01528.i, %647 ], [ %.11623.i, %.thread.i60 ] - %698 = or i1 %.0109, %.015.lcssa.i61 + %699 = or i1 %.0109, %.015.lcssa.i61 br label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_1EbRNS2_8FunctionET_.exit" "_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_1EbRNS2_8FunctionET_.exit": ; preds = %.thread.i49, %547, %542, %71, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", %639, %636, %633, %630, %627, %624, %621, %618, %615, %612, %609, %606, %603, %600, %597, %594, %591, %588, %585, %582, %579, %576, %573, %570, %567, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_0EbRNS2_8FunctionET_.exit", %_ZL17lowerLoadRelativeRN4llvm8FunctionE.exit, %_ZNK12_GLOBAL__N_124PreISelIntrinsicLowering22expandMemIntrinsicUsesERN4llvm8FunctionE.exit - %.1 = phi i1 [ %.0109, %71 ], [ %426, %_ZNK12_GLOBAL__N_124PreISelIntrinsicLowering22expandMemIntrinsicUsesERN4llvm8FunctionE.exit ], [ %519, %_ZL17lowerLoadRelativeRN4llvm8FunctionE.exit ], [ %541, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_0EbRNS2_8FunctionET_.exit" ], [ %569, %567 ], [ %572, %570 ], [ %575, %573 ], [ %578, %576 ], [ %581, %579 ], [ %584, %582 ], [ %587, %585 ], [ %590, %588 ], [ %593, %591 ], [ %596, %594 ], [ %599, %597 ], [ %602, %600 ], [ %605, %603 ], [ %608, %606 ], [ %611, %609 ], [ %614, %612 ], [ %617, %615 ], [ %620, %618 ], [ %623, %621 ], [ %626, %624 ], [ %629, %627 ], [ %632, %630 ], [ %635, %633 ], [ %638, %636 ], [ %641, %639 ], [ %698, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit" ], [ %.0109, %542 ], [ %.2, %547 ], [ %.3, %.thread.i49 ] - %699 = getelementptr inbounds nuw i8, ptr %.sroa.067.0110, i64 8 - %.sroa.067.0 = load ptr, ptr %699, align 8, !tbaa !91 + %.1 = phi i1 [ %.0109, %71 ], [ %426, %_ZNK12_GLOBAL__N_124PreISelIntrinsicLowering22expandMemIntrinsicUsesERN4llvm8FunctionE.exit ], [ %519, %_ZL17lowerLoadRelativeRN4llvm8FunctionE.exit ], [ %541, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_0EbRNS2_8FunctionET_.exit" ], [ %569, %567 ], [ %572, %570 ], [ %575, %573 ], [ %578, %576 ], [ %581, %579 ], [ %584, %582 ], [ %587, %585 ], [ %590, %588 ], [ %593, %591 ], [ %596, %594 ], [ %599, %597 ], [ %602, %600 ], [ %605, %603 ], [ %608, %606 ], [ %611, %609 ], [ %614, %612 ], [ %617, %615 ], [ %620, %618 ], [ %623, %621 ], [ %626, %624 ], [ %629, %627 ], [ %632, %630 ], [ %635, %633 ], [ %638, %636 ], [ %641, %639 ], [ %699, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit" ], [ %.0109, %542 ], [ %.2, %547 ], [ %.3, %.thread.i49 ] + %700 = getelementptr inbounds nuw i8, ptr %.sroa.067.0110, i64 8 + %.sroa.067.0 = load ptr, ptr %700, align 8, !tbaa !91 %.not = icmp eq ptr %.sroa.067.0, %29 br i1 %.not, label %._crit_edge, label %71 } diff --git a/bench/llvm/optimized/Process.ll b/bench/llvm/optimized/Process.ll index 637e8ed2763..d193890b874 100644 --- a/bench/llvm/optimized/Process.ll +++ b/bench/llvm/optimized/Process.ll @@ -1565,11 +1565,13 @@ define dso_local noundef zeroext i1 @_ZN4llvm3sys7Process15ColorNeedsFlushEv() l ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef nonnull ptr @_ZN4llvm3sys7Process11OutputColorEcbb(i8 noundef signext %0, i1 noundef zeroext %1, i1 noundef zeroext %2) local_unnamed_addr #5 align 2 { %4 = zext i1 %2 to i64 - %5 = zext i1 %1 to i64 - %6 = and i8 %0, 15 - %7 = zext nneg i8 %6 to i64 - %8 = getelementptr inbounds nuw [2 x [2 x [16 x [11 x i8]]]], ptr @_ZL10colorcodes, i64 0, i64 %4, i64 %5, i64 %7 - ret ptr %8 + %5 = getelementptr inbounds nuw [2 x [2 x [16 x [11 x i8]]]], ptr @_ZL10colorcodes, i64 0, i64 %4 + %6 = zext i1 %1 to i64 + %7 = getelementptr inbounds nuw [2 x [16 x [11 x i8]]], ptr %5, i64 0, i64 %6 + %8 = and i8 %0, 15 + %9 = zext nneg i8 %8 to i64 + %10 = getelementptr inbounds nuw [16 x [11 x i8]], ptr %7, i64 0, i64 %9 + ret ptr %10 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/llvm/optimized/X86InstrInfo.ll b/bench/llvm/optimized/X86InstrInfo.ll index 32d3e7cbce1..5cc47d7ad8a 100644 --- a/bench/llvm/optimized/X86InstrInfo.ll +++ b/bench/llvm/optimized/X86InstrInfo.ll @@ -8501,13 +8501,14 @@ define dso_local noundef i32 @_ZNK4llvm12X86InstrInfo30getFMA3OpcodeToCommuteOpe %or.cond15.i = and i1 %30, %33 %34 = select i1 %or.cond15.i, i64 1, i64 2 %35 = select i1 %or.cond.i, i64 0, i64 %34 - %36 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @_ZZNK4llvm12X86InstrInfo30getFMA3OpcodeToCommuteOperandsERKNS_12MachineInstrEjjRKNS_17X86InstrFMA3GroupEE11FormMapping, i64 0, i64 %35, i64 %indvars.iv - %37 = load i32, ptr %36, align 4, !tbaa !85 - %38 = zext i32 %37 to i64 - %39 = getelementptr inbounds nuw [3 x i32], ptr %6, i64 0, i64 %38 - %40 = load i32, ptr %39, align 4, !tbaa !85 + %36 = getelementptr inbounds nuw [3 x [3 x i32]], ptr @_ZZNK4llvm12X86InstrInfo30getFMA3OpcodeToCommuteOperandsERKNS_12MachineInstrEjjRKNS_17X86InstrFMA3GroupEE11FormMapping, i64 0, i64 %35 + %37 = getelementptr inbounds nuw [3 x i32], ptr %36, i64 0, i64 %indvars.iv + %38 = load i32, ptr %37, align 4, !tbaa !85 + %39 = zext i32 %38 to i64 + %40 = getelementptr inbounds nuw [3 x i32], ptr %6, i64 0, i64 %39 + %41 = load i32, ptr %40, align 4, !tbaa !85 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #32 - ret i32 %40 + ret i32 %41 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/llvm/optimized/X86TargetMachine.ll b/bench/llvm/optimized/X86TargetMachine.ll index e8339aa2a9b..aca5cdb43f6 100644 --- a/bench/llvm/optimized/X86TargetMachine.ll +++ b/bench/llvm/optimized/X86TargetMachine.ll @@ -6450,19 +6450,20 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm19TargetTransformInfo5Mo %11 = load ptr, ptr %6, align 8, !tbaa !408 %12 = getelementptr inbounds nuw i8, ptr %11, i64 395330 %13 = zext i16 %9 to i64 - %14 = zext i32 %1 to i64 - %15 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13, i64 %14 - %16 = load i16, ptr %15, align 2, !tbaa !732 - %17 = trunc i16 %16 to i8 - %18 = icmp ult i8 %17, 16 - %.mask.i.i = and i8 %17, -16 - %19 = icmp eq i8 %.mask.i.i, 64 - %spec.select.i.i = or i1 %18, %19 + %14 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13 + %15 = zext i32 %1 to i64 + %16 = getelementptr inbounds nuw [5 x i16], ptr %14, i64 0, i64 %15 + %17 = load i16, ptr %16, align 2, !tbaa !732 + %18 = trunc i16 %17 to i8 + %19 = icmp ult i8 %18, 16 + %.mask.i.i = and i8 %18, -16 + %20 = icmp eq i8 %.mask.i.i, 64 + %spec.select.i.i = or i1 %19, %20 br label %_ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE18isIndexedLoadLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit _ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE18isIndexedLoadLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit: ; preds = %3, %10 - %20 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] - ret i1 %20 + %21 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] + ret i1 %21 } ; Function Attrs: mustprogress nounwind uwtable @@ -6480,16 +6481,17 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm19TargetTransformInfo5Mo %11 = load ptr, ptr %6, align 8, !tbaa !408 %12 = getelementptr inbounds nuw i8, ptr %11, i64 395330 %13 = zext i16 %9 to i64 - %14 = zext i32 %1 to i64 - %15 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13, i64 %14 - %16 = load i16, ptr %15, align 2, !tbaa !732 - %17 = and i16 %16, 11 - %spec.select.i.i = icmp eq i16 %17, 0 + %14 = getelementptr inbounds nuw [234 x [5 x i16]], ptr %12, i64 0, i64 %13 + %15 = zext i32 %1 to i64 + %16 = getelementptr inbounds nuw [5 x i16], ptr %14, i64 0, i64 %15 + %17 = load i16, ptr %16, align 2, !tbaa !732 + %18 = and i16 %17, 11 + %spec.select.i.i = icmp eq i16 %18, 0 br label %_ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE19isIndexedStoreLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit _ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE19isIndexedStoreLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit: ; preds = %3, %10 - %18 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] - ret i1 %18 + %19 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] + ret i1 %19 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/lua/optimized/lstring.ll b/bench/lua/optimized/lstring.ll index 1e05f1cf3dd..c5e5c8f280c 100644 --- a/bench/lua/optimized/lstring.ll +++ b/bench/lua/optimized/lstring.ll @@ -308,35 +308,36 @@ define hidden void @luaS_clearcache(ptr noundef captures(none) %0) local_unnamed %3 = getelementptr inbounds nuw i8, ptr %0, i64 272 br label %.preheader -.preheader: ; preds = %1, %14 - %indvars.iv14 = phi i64 [ 0, %1 ], [ %indvars.iv.next15, %14 ] - br label %4 - -4: ; preds = %.preheader, %13 - %5 = phi i1 [ true, %.preheader ], [ false, %13 ] - %indvars.iv = phi i64 [ 0, %.preheader ], [ 1, %13 ] - %6 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %2, i64 0, i64 %indvars.iv14, i64 %indvars.iv - %7 = load ptr, ptr %6, align 8, !tbaa !30 - %8 = getelementptr inbounds nuw i8, ptr %7, i64 9 - %9 = load i8, ptr %8, align 1, !tbaa !33 - %10 = and i8 %9, 24 - %.not = icmp eq i8 %10, 0 - br i1 %.not, label %13, label %11 - -11: ; preds = %4 - %12 = load ptr, ptr %3, align 8, !tbaa !34 - store ptr %12, ptr %6, align 8, !tbaa !30 - br label %13 - -13: ; preds = %4, %11 - br i1 %5, label %4, label %14 - -14: ; preds = %13 +.preheader: ; preds = %1, %15 + %indvars.iv14 = phi i64 [ 0, %1 ], [ %indvars.iv.next15, %15 ] + %4 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %2, i64 0, i64 %indvars.iv14 + br label %5 + +5: ; preds = %.preheader, %14 + %6 = phi i1 [ true, %.preheader ], [ false, %14 ] + %indvars.iv = phi i64 [ 0, %.preheader ], [ 1, %14 ] + %7 = getelementptr inbounds nuw [2 x ptr], ptr %4, i64 0, i64 %indvars.iv + %8 = load ptr, ptr %7, align 8, !tbaa !30 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 9 + %10 = load i8, ptr %9, align 1, !tbaa !33 + %11 = and i8 %10, 24 + %.not = icmp eq i8 %11, 0 + br i1 %.not, label %14, label %12 + +12: ; preds = %5 + %13 = load ptr, ptr %3, align 8, !tbaa !34 + store ptr %13, ptr %7, align 8, !tbaa !30 + br label %14 + +14: ; preds = %5, %12 + br i1 %6, label %5, label %15 + +15: ; preds = %14 %indvars.iv.next15 = add nuw nsw i64 %indvars.iv14, 1 %exitcond.not = icmp eq i64 %indvars.iv.next15, 53 - br i1 %exitcond.not, label %15, label %.preheader + br i1 %exitcond.not, label %16, label %.preheader -15: ; preds = %14 +16: ; preds = %15 ret void } @@ -356,21 +357,19 @@ define hidden void @luaS_init(ptr noundef %0) local_unnamed_addr #4 { tail call void @luaC_fix(ptr noundef %0, ptr noundef %7) #13 %9 = load ptr, ptr %8, align 8, !tbaa !34 %10 = getelementptr inbounds nuw i8, ptr %3, i64 552 - %invariant.gep = getelementptr inbounds i8, ptr %10, i64 8 br label %.preheader .preheader: ; preds = %1, %.preheader %indvars.iv21 = phi i64 [ 0, %1 ], [ %indvars.iv.next22, %.preheader ] - %11 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %10, i64 0, i64 %indvars.iv21, i64 0 + %11 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %10, i64 0, i64 %indvars.iv21 store ptr %9, ptr %11, align 8, !tbaa !30 - %.idx = shl nuw nsw i64 %indvars.iv21, 4 - %gep = getelementptr inbounds i8, ptr %invariant.gep, i64 %.idx - store ptr %9, ptr %gep, align 8, !tbaa !30 + %12 = getelementptr inbounds nuw i8, ptr %11, i64 8 + store ptr %9, ptr %12, align 8, !tbaa !30 %indvars.iv.next22 = add nuw nsw i64 %indvars.iv21, 1 %exitcond.not = icmp eq i64 %indvars.iv.next22, 53 - br i1 %exitcond.not, label %12, label %.preheader + br i1 %exitcond.not, label %13, label %.preheader -12: ; preds = %.preheader +13: ; preds = %.preheader ret void } diff --git a/bench/luau/optimized/AssemblyBuilderX64.ll b/bench/luau/optimized/AssemblyBuilderX64.ll index bab141136ed..a94617aef2a 100644 --- a/bench/luau/optimized/AssemblyBuilderX64.ll +++ b/bench/luau/optimized/AssemblyBuilderX64.ll @@ -2065,143 +2065,146 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan %.sroa.9.0.extract.trunc = trunc i64 %.sroa.9.0.extract.shift to i8 %.sroa.12.0.extract.shift = lshr i64 %1, 32 %.sroa.12.0.extract.trunc = trunc nuw i64 %.sroa.12.0.extract.shift to i32 - switch i8 %.sroa.0.0.extract.trunc, label %61 [ + switch i8 %.sroa.0.0.extract.trunc, label %64 [ i8 0, label %3 - i8 1, label %9 - i8 2, label %58 + i8 1, label %10 + i8 2, label %61 ] 3: ; preds = %2 %4 = and i64 %.sroa.4.0.extract.shift, 7 - %5 = lshr i64 %1, 19 - %6 = and i64 %5, 31 - %7 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4, i64 %6 - %8 = load ptr, ptr %7, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %8) - br label %61 + %5 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4 + %6 = lshr i64 %1, 19 + %7 = and i64 %6, 31 + %8 = getelementptr inbounds nuw [16 x ptr], ptr %5, i64 0, i64 %7 + %9 = load ptr, ptr %8, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %9) + br label %64 -9: ; preds = %2 - %10 = icmp eq i8 %.sroa.4.0.extract.trunc, 0 - %11 = and i8 %.sroa.9.0.extract.trunc, 15 - %.not18 = icmp eq i8 %11, 0 - br i1 %10, label %12, label %18 +10: ; preds = %2 + %11 = icmp eq i8 %.sroa.4.0.extract.trunc, 0 + %12 = and i8 %.sroa.9.0.extract.trunc, 15 + %.not18 = icmp eq i8 %12, 0 + br i1 %11, label %13, label %19 -12: ; preds = %9 - br i1 %.not18, label %17, label %13 +13: ; preds = %10 + br i1 %.not18, label %18, label %14 -13: ; preds = %12 - %14 = and i64 %.sroa.9.0.extract.shift, 15 - %15 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %14 - %16 = load ptr, ptr %15, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %16) - br label %17 +14: ; preds = %13 + %15 = and i64 %.sroa.9.0.extract.shift, 15 + %16 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %15 + %17 = load ptr, ptr %16, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %17) + br label %18 -17: ; preds = %13, %12 +18: ; preds = %14, %13 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.95, i32 noundef %.sroa.12.0.extract.trunc) - br label %61 + br label %64 -18: ; preds = %9 - br i1 %.not18, label %23, label %19 +19: ; preds = %10 + br i1 %.not18, label %24, label %20 -19: ; preds = %18 - %20 = and i64 %.sroa.9.0.extract.shift, 15 - %21 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %20 - %22 = load ptr, ptr %21, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %22) - br label %23 +20: ; preds = %19 + %21 = and i64 %.sroa.9.0.extract.shift, 15 + %22 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %21 + %23 = load ptr, ptr %22, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %23) + br label %24 -23: ; preds = %19, %18 +24: ; preds = %20, %19 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.96) %.not25 = icmp eq i8 %.sroa.4.0.extract.trunc, -128 - br i1 %.not25, label %30, label %24 - -24: ; preds = %23 - %25 = and i64 %.sroa.4.0.extract.shift, 7 - %26 = lshr i64 %1, 19 - %27 = and i64 %26, 31 - %28 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %25, i64 %27 - %29 = load ptr, ptr %28, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %29) - br label %30 - -30: ; preds = %24, %23 - %31 = and i64 %1, 65280 - %.not26 = icmp eq i64 %31, 32768 - br i1 %.not26, label %39, label %32 - -32: ; preds = %30 - %33 = select i1 %.not25, ptr @.str.99, ptr @.str.98 - %34 = and i64 %.sroa.2.0.extract.shift, 7 - %35 = lshr i64 %1, 11 - %36 = and i64 %35, 31 - %37 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %34, i64 %36 - %38 = load ptr, ptr %37, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.97, ptr noundef nonnull %33, ptr noundef %38) - br label %39 - -39: ; preds = %32, %30 - %40 = lshr i8 %.sroa.9.0.extract.trunc, 4 - %.not16 = icmp eq i8 %40, 1 - br i1 %.not16, label %43, label %41 - -41: ; preds = %39 - %42 = zext nneg i8 %40 to i32 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.100, i32 noundef %42) - br label %43 - -43: ; preds = %41, %39 + br i1 %.not25, label %32, label %25 + +25: ; preds = %24 + %26 = and i64 %.sroa.4.0.extract.shift, 7 + %27 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %26 + %28 = lshr i64 %1, 19 + %29 = and i64 %28, 31 + %30 = getelementptr inbounds nuw [16 x ptr], ptr %27, i64 0, i64 %29 + %31 = load ptr, ptr %30, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %31) + br label %32 + +32: ; preds = %25, %24 + %33 = and i64 %1, 65280 + %.not26 = icmp eq i64 %33, 32768 + br i1 %.not26, label %42, label %34 + +34: ; preds = %32 + %35 = select i1 %.not25, ptr @.str.99, ptr @.str.98 + %36 = and i64 %.sroa.2.0.extract.shift, 7 + %37 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %36 + %38 = lshr i64 %1, 11 + %39 = and i64 %38, 31 + %40 = getelementptr inbounds nuw [16 x ptr], ptr %37, i64 0, i64 %39 + %41 = load ptr, ptr %40, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.97, ptr noundef nonnull %35, ptr noundef %41) + br label %42 + +42: ; preds = %34, %32 + %43 = lshr i8 %.sroa.9.0.extract.trunc, 4 + %.not16 = icmp eq i8 %43, 1 + br i1 %.not16, label %46, label %44 + +44: ; preds = %42 + %45 = zext nneg i8 %43 to i32 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.100, i32 noundef %45) + br label %46 + +46: ; preds = %44, %42 %.not17 = icmp ult i64 %1, 4294967296 - br i1 %.not17, label %51, label %44 + br i1 %.not17, label %54, label %47 -44: ; preds = %43 +47: ; preds = %46 %or.cond = icmp ult i64 %1, 42949672960 - br i1 %or.cond, label %45, label %46 + br i1 %or.cond, label %48, label %49 -45: ; preds = %44 +48: ; preds = %47 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.101, i32 noundef %.sroa.12.0.extract.trunc) - br label %51 + br label %54 -46: ; preds = %44 - %47 = icmp sgt i32 %.sroa.12.0.extract.trunc, 0 - br i1 %47, label %48, label %49 +49: ; preds = %47 + %50 = icmp sgt i32 %.sroa.12.0.extract.trunc, 0 + br i1 %50, label %51, label %52 -48: ; preds = %46 +51: ; preds = %49 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.102, i32 noundef %.sroa.12.0.extract.trunc) - br label %51 + br label %54 -49: ; preds = %46 - %50 = sub nsw i32 0, %.sroa.12.0.extract.trunc - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.103, i32 noundef %50) - br label %51 +52: ; preds = %49 + %53 = sub nsw i32 0, %.sroa.12.0.extract.trunc + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.103, i32 noundef %53) + br label %54 -51: ; preds = %45, %49, %48, %43 - %52 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %53 = load i64, ptr %52, align 8, !tbaa !10 - %54 = icmp eq i64 %53, 4611686018427387903 - br i1 %54, label %55, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit +54: ; preds = %48, %52, %51, %46 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %56 = load i64, ptr %55, align 8, !tbaa !10 + %57 = icmp eq i64 %56, 4611686018427387903 + br i1 %57, label %58, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit -55: ; preds = %51 +58: ; preds = %54 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.290) #21 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit: ; preds = %51 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %57 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.104, i64 noundef 1) - br label %61 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit: ; preds = %54 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %60 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.104, i64 noundef 1) + br label %64 -58: ; preds = %2 +61: ; preds = %2 %or.cond5 = icmp ult i64 %1, 42949672960 - br i1 %or.cond5, label %59, label %60 + br i1 %or.cond5, label %62, label %63 -59: ; preds = %58 +62: ; preds = %61 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.105, i32 noundef %.sroa.12.0.extract.trunc) - br label %61 + br label %64 -60: ; preds = %58 +63: ; preds = %61 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.106, i32 noundef %.sroa.12.0.extract.trunc) - br label %61 + br label %64 -61: ; preds = %2, %59, %60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit, %17, %3 +64: ; preds = %2, %62, %63, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit, %18, %3 ret void } @@ -7119,11 +7122,12 @@ declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immar define dso_local noundef ptr @_ZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64E(ptr noundef nonnull readnone align 8 captures(none) dereferenceable(252) %0, i8 %1) local_unnamed_addr #10 align 2 { %3 = and i8 %1, 7 %4 = zext nneg i8 %3 to i64 - %5 = lshr i8 %1, 3 - %6 = zext nneg i8 %5 to i64 - %7 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4, i64 %6 - %8 = load ptr, ptr %7, align 8, !tbaa !64 - ret ptr %8 + %5 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %4 + %6 = lshr i8 %1, 3 + %7 = zext nneg i8 %6 to i64 + %8 = getelementptr inbounds nuw [16 x ptr], ptr %5, i64 0, i64 %7 + %9 = load ptr, ptr %8, align 8, !tbaa !64 + ret ptr %9 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable diff --git a/bench/lvgl/optimized/lv_ime_pinyin.ll b/bench/lvgl/optimized/lv_ime_pinyin.ll index 522bfa7b41d..d420058ef0f 100644 --- a/bench/lvgl/optimized/lv_ime_pinyin.ll +++ b/bench/lvgl/optimized/lv_ime_pinyin.ll @@ -1711,9 +1711,9 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 24: ; preds = %11, %14, %22 %.034 = phi i16 [ %5, %14 ], [ %5, %11 ], [ %spec.select, %22 ] - br label %45 + br label %46 -25: ; preds = %45 +25: ; preds = %46 %26 = getelementptr inbounds nuw i8, ptr %0, i64 154 %27 = load i16, ptr %3, align 8, !tbaa !24 %.not47 = icmp eq i16 %27, 0 @@ -1726,78 +1726,80 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 %30 = zext i16 %29 to i64 br i1 %.not41, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph.split.us: ; preds = %.lr.ph, %32 - %indvars.iv61 = phi i64 [ %indvars.iv.next62, %32 ], [ 0, %.lr.ph ] +.lr.ph.split.us: ; preds = %.lr.ph, %33 + %indvars.iv61 = phi i64 [ %indvars.iv.next62, %33 ], [ 0, %.lr.ph ] %31 = mul nuw nsw i64 %indvars.iv61, 3 - br label %38 + %32 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv61 + br label %39 -32: ; preds = %38 +33: ; preds = %39 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 - %33 = load i16, ptr %3, align 8, !tbaa !24 - %34 = trunc nuw nsw i64 %indvars.iv.next62 to i16 - %35 = icmp ugt i16 %33, %34 - %36 = icmp samesign ult i64 %indvars.iv61, 5 - %37 = and i1 %36, %35 - br i1 %37, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !42 - -38: ; preds = %38, %.lr.ph.split.us - %indvars.iv57 = phi i64 [ %indvars.iv.next58, %38 ], [ 0, %.lr.ph.split.us ] - %39 = load ptr, ptr %7, align 8, !tbaa !41 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 %30 - %41 = getelementptr inbounds nuw i8, ptr %40, i64 %31 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 %indvars.iv57 - %43 = load i8, ptr %42, align 1, !tbaa !8 - %44 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv61, i64 %indvars.iv57 - store i8 %43, ptr %44, align 1, !tbaa !8 + %34 = load i16, ptr %3, align 8, !tbaa !24 + %35 = trunc nuw nsw i64 %indvars.iv.next62 to i16 + %36 = icmp ugt i16 %34, %35 + %37 = icmp samesign ult i64 %indvars.iv61, 5 + %38 = and i1 %37, %36 + br i1 %38, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !42 + +39: ; preds = %39, %.lr.ph.split.us + %indvars.iv57 = phi i64 [ %indvars.iv.next58, %39 ], [ 0, %.lr.ph.split.us ] + %40 = load ptr, ptr %7, align 8, !tbaa !41 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 %30 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 %31 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 %indvars.iv57 + %44 = load i8, ptr %43, align 1, !tbaa !8 + %45 = getelementptr inbounds nuw [4 x i8], ptr %32, i64 0, i64 %indvars.iv57 + store i8 %44, ptr %45, align 1, !tbaa !8 %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 3 - br i1 %exitcond60.not, label %32, label %38, !llvm.loop !43 + br i1 %exitcond60.not, label %33, label %39, !llvm.loop !43 -45: ; preds = %24, %45 - %indvars.iv = phi i64 [ 0, %24 ], [ %indvars.iv.next, %45 ] - %46 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv - tail call void @lv_memset(ptr noundef nonnull %46, i8 noundef zeroext 0, i64 noundef 4) #6 - store i8 32, ptr %46, align 4, !tbaa !8 +46: ; preds = %24, %46 + %indvars.iv = phi i64 [ 0, %24 ], [ %indvars.iv.next, %46 ] + %47 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv + tail call void @lv_memset(ptr noundef nonnull %47, i8 noundef zeroext 0, i64 noundef 4) #6 + store i8 32, ptr %47, align 4, !tbaa !8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 - br i1 %exitcond.not, label %25, label %45, !llvm.loop !44 - -.lr.ph.split: ; preds = %.lr.ph, %52 - %indvars.iv54 = phi i64 [ %indvars.iv.next55, %52 ], [ 0, %.lr.ph ] - %47 = phi i16 [ %54, %52 ], [ 0, %.lr.ph ] - %48 = load i16, ptr %26, align 2, !tbaa !22 - %49 = icmp ne i16 %48, %.034 - %.not42 = icmp samesign ugt i16 %6, %47 - %or.cond = select i1 %49, i1 true, i1 %.not42 - br i1 %or.cond, label %50, label %.loopexit - -50: ; preds = %.lr.ph.split - %51 = mul nuw nsw i64 %indvars.iv54, 3 - br label %58 - -52: ; preds = %58 + br i1 %exitcond.not, label %25, label %46, !llvm.loop !44 + +.lr.ph.split: ; preds = %.lr.ph, %54 + %indvars.iv54 = phi i64 [ %indvars.iv.next55, %54 ], [ 0, %.lr.ph ] + %48 = phi i16 [ %56, %54 ], [ 0, %.lr.ph ] + %49 = load i16, ptr %26, align 2, !tbaa !22 + %50 = icmp ne i16 %49, %.034 + %.not42 = icmp samesign ugt i16 %6, %48 + %or.cond = select i1 %50, i1 true, i1 %.not42 + br i1 %or.cond, label %51, label %.loopexit + +51: ; preds = %.lr.ph.split + %52 = mul nuw nsw i64 %indvars.iv54, 3 + %53 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv54 + br label %60 + +54: ; preds = %60 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 - %53 = load i16, ptr %3, align 8, !tbaa !24 - %54 = trunc nuw nsw i64 %indvars.iv.next55 to i16 - %55 = icmp ugt i16 %53, %54 - %56 = icmp samesign ult i64 %indvars.iv54, 5 - %57 = and i1 %56, %55 - br i1 %57, label %.lr.ph.split, label %.loopexit, !llvm.loop !42 - -58: ; preds = %50, %58 - %indvars.iv50 = phi i64 [ 0, %50 ], [ %indvars.iv.next51, %58 ] - %59 = load ptr, ptr %7, align 8, !tbaa !41 - %60 = getelementptr inbounds nuw i8, ptr %59, i64 %30 - %61 = getelementptr inbounds nuw i8, ptr %60, i64 %51 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 %indvars.iv50 - %63 = load i8, ptr %62, align 1, !tbaa !8 - %64 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv54, i64 %indvars.iv50 - store i8 %63, ptr %64, align 1, !tbaa !8 + %55 = load i16, ptr %3, align 8, !tbaa !24 + %56 = trunc nuw nsw i64 %indvars.iv.next55 to i16 + %57 = icmp ugt i16 %55, %56 + %58 = icmp samesign ult i64 %indvars.iv54, 5 + %59 = and i1 %58, %57 + br i1 %59, label %.lr.ph.split, label %.loopexit, !llvm.loop !42 + +60: ; preds = %51, %60 + %indvars.iv50 = phi i64 [ 0, %51 ], [ %indvars.iv.next51, %60 ] + %61 = load ptr, ptr %7, align 8, !tbaa !41 + %62 = getelementptr inbounds nuw i8, ptr %61, i64 %30 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 %52 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 %indvars.iv50 + %65 = load i8, ptr %64, align 1, !tbaa !8 + %66 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv50 + store i8 %65, ptr %66, align 1, !tbaa !8 %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1 %exitcond53.not = icmp eq i64 %indvars.iv.next51, 3 - br i1 %exitcond53.not, label %52, label %58, !llvm.loop !43 + br i1 %exitcond53.not, label %54, label %60, !llvm.loop !43 -.loopexit: ; preds = %.lr.ph.split, %52, %32, %25, %16, %2 +.loopexit: ; preds = %.lr.ph.split, %54, %33, %25, %16, %2 ret void } @@ -1972,7 +1974,7 @@ pinyin_search_matching.exit.thread: ; preds = %._crit_edge.us.thre call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) %38 = getelementptr inbounds nuw i8, ptr %0, i64 112 store ptr null, ptr %38, align 8, !tbaa !41 - br label %67 + br label %68 pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, %.lr.ph.i, %.preheader.lr.ph.i, %.preheader.lr.ph.split.us.i %.us-phi.i = phi ptr [ %16, %.preheader.lr.ph.i ], [ %16, %.preheader.lr.ph.split.us.i ], [ %.02943.us.i, %.lr.ph.i ], [ %.02943.us.i, %._crit_edge.us.i ] @@ -1987,7 +1989,7 @@ pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, % %45 = getelementptr inbounds nuw i8, ptr %0, i64 112 store ptr %44, ptr %45, align 8, !tbaa !41 %46 = icmp eq ptr %44, null - br i1 %46, label %67, label %47 + br i1 %46, label %68, label %47 47: ; preds = %pinyin_search_matching.exit %48 = getelementptr inbounds nuw i8, ptr %0, i64 154 @@ -2008,39 +2010,40 @@ pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, % %exitcond38.not = icmp eq i64 %indvars.iv.next36, 6 br i1 %exitcond38.not, label %.preheader28, label %50, !llvm.loop !49 -.preheader: ; preds = %.preheader28, %55 - %indvars.iv44 = phi i64 [ %indvars.iv.next45, %55 ], [ 0, %.preheader28 ] +.preheader: ; preds = %.preheader28, %56 + %indvars.iv44 = phi i64 [ %indvars.iv.next45, %56 ], [ 0, %.preheader28 ] %52 = mul nuw nsw i64 %indvars.iv44, 3 - br label %61 + %53 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv44 + br label %62 -._crit_edge: ; preds = %55, %.preheader28 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %54 = load ptr, ptr %53, align 8, !tbaa !30 - tail call void @lv_obj_remove_flag(ptr noundef %54, i32 noundef 1) #6 - br label %67 +._crit_edge: ; preds = %56, %.preheader28 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %55 = load ptr, ptr %54, align 8, !tbaa !30 + tail call void @lv_obj_remove_flag(ptr noundef %55, i32 noundef 1) #6 + br label %68 -55: ; preds = %61 +56: ; preds = %62 %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 - %56 = load i16, ptr %4, align 8, !tbaa !24 - %57 = trunc nuw nsw i64 %indvars.iv.next45 to i16 - %58 = icmp ugt i16 %56, %57 - %59 = icmp samesign ult i64 %indvars.iv44, 5 - %60 = and i1 %59, %58 - br i1 %60, label %.preheader, label %._crit_edge, !llvm.loop !50 - -61: ; preds = %.preheader, %61 - %indvars.iv39 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next40, %61 ] - %62 = load ptr, ptr %45, align 8, !tbaa !41 - %63 = getelementptr inbounds nuw i8, ptr %62, i64 %indvars.iv39 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 %52 - %65 = load i8, ptr %64, align 1, !tbaa !8 - %66 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv44, i64 %indvars.iv39 - store i8 %65, ptr %66, align 1, !tbaa !8 + %57 = load i16, ptr %4, align 8, !tbaa !24 + %58 = trunc nuw nsw i64 %indvars.iv.next45 to i16 + %59 = icmp ugt i16 %57, %58 + %60 = icmp samesign ult i64 %indvars.iv44, 5 + %61 = and i1 %60, %59 + br i1 %61, label %.preheader, label %._crit_edge, !llvm.loop !50 + +62: ; preds = %.preheader, %62 + %indvars.iv39 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next40, %62 ] + %63 = load ptr, ptr %45, align 8, !tbaa !41 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 %indvars.iv39 + %65 = getelementptr inbounds nuw i8, ptr %64, i64 %52 + %66 = load i8, ptr %65, align 1, !tbaa !8 + %67 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv39 + store i8 %66, ptr %67, align 1, !tbaa !8 %indvars.iv.next40 = add nuw nsw i64 %indvars.iv39, 1 %exitcond43.not = icmp eq i64 %indvars.iv.next40, 3 - br i1 %exitcond43.not, label %55, label %61, !llvm.loop !51 + br i1 %exitcond43.not, label %56, label %62, !llvm.loop !51 -67: ; preds = %pinyin_search_matching.exit.thread, %pinyin_search_matching.exit, %._crit_edge +68: ; preds = %pinyin_search_matching.exit.thread, %pinyin_search_matching.exit, %._crit_edge ret void } diff --git a/bench/lvgl/optimized/lv_matrix.ll b/bench/lvgl/optimized/lv_matrix.ll index 78e6acf3011..17c30b5b83d 100644 --- a/bench/lvgl/optimized/lv_matrix.ll +++ b/bench/lvgl/optimized/lv_matrix.ll @@ -80,7 +80,7 @@ lv_matrix_is_identity_or_translation.exit: ; preds = %24 %36 = load float, ptr %35, align 4, !tbaa !3 %37 = fadd float %2, %36 store float %37, ptr %35, align 4, !tbaa !3 - br label %65 + br label %66 lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %20, %24, %lv_matrix_is_identity_or_translation.exit call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %5) #9 @@ -104,45 +104,46 @@ lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %2 call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) #9 br label %.preheader.i -.preheader.i: ; preds = %52, %lv_matrix_is_identity_or_translation.exit.thread - %indvars.iv22.i = phi i64 [ 0, %lv_matrix_is_identity_or_translation.exit.thread ], [ %indvars.iv.next23.i, %52 ] +.preheader.i: ; preds = %53, %lv_matrix_is_identity_or_translation.exit.thread + %indvars.iv22.i = phi i64 [ 0, %lv_matrix_is_identity_or_translation.exit.thread ], [ %indvars.iv.next23.i, %53 ] %46 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %47 = load float, ptr %46, align 4, !tbaa !3 %48 = getelementptr inbounds nuw i8, ptr %46, i64 4 %49 = load float, ptr %48, align 4, !tbaa !3 %50 = getelementptr inbounds nuw i8, ptr %46, i64 8 %51 = load float, ptr %50, align 4, !tbaa !3 - br label %53 + %52 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i + br label %54 -52: ; preds = %53 +53: ; preds = %54 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -53: ; preds = %53, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %53 ] - %54 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i - %55 = load float, ptr %54, align 4, !tbaa !3 - %56 = getelementptr inbounds nuw [3 x float], ptr %40, i64 0, i64 %indvars.iv.i - %57 = load float, ptr %56, align 4, !tbaa !3 - %58 = fmul float %49, %57 - %59 = tail call float @llvm.fmuladd.f32(float %47, float %55, float %58) - %60 = getelementptr inbounds nuw [3 x float], ptr %43, i64 0, i64 %indvars.iv.i - %61 = load float, ptr %60, align 4, !tbaa !3 - %62 = tail call float @llvm.fmuladd.f32(float %51, float %61, float %59) - %63 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i - store float %62, ptr %63, align 4, !tbaa !3 +54: ; preds = %54, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %54 ] + %55 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i + %56 = load float, ptr %55, align 4, !tbaa !3 + %57 = getelementptr inbounds nuw [3 x float], ptr %40, i64 0, i64 %indvars.iv.i + %58 = load float, ptr %57, align 4, !tbaa !3 + %59 = fmul float %49, %58 + %60 = tail call float @llvm.fmuladd.f32(float %47, float %56, float %59) + %61 = getelementptr inbounds nuw [3 x float], ptr %43, i64 0, i64 %indvars.iv.i + %62 = load float, ptr %61, align 4, !tbaa !3 + %63 = tail call float @llvm.fmuladd.f32(float %51, float %62, float %60) + %64 = getelementptr inbounds nuw [3 x float], ptr %52, i64 0, i64 %indvars.iv.i + store float %63, ptr %64, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %52, label %53, !llvm.loop !9 + br i1 %exitcond.not.i, label %53, label %54, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %52 - %64 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %53 + %65 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #9 - br label %65 + br label %66 -65: ; preds = %lv_matrix_multiply.exit, %31 +66: ; preds = %lv_matrix_multiply.exit, %31 ret void } @@ -204,42 +205,43 @@ define void @lv_matrix_multiply(ptr noundef %0, ptr noundef readonly captures(no %5 = getelementptr inbounds nuw i8, ptr %1, i64 24 br label %.preheader -.preheader: ; preds = %2, %14 - %indvars.iv22 = phi i64 [ 0, %2 ], [ %indvars.iv.next23, %14 ] +.preheader: ; preds = %2, %15 + %indvars.iv22 = phi i64 [ 0, %2 ], [ %indvars.iv.next23, %15 ] %6 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22 %7 = load float, ptr %6, align 4, !tbaa !3 %8 = getelementptr inbounds nuw i8, ptr %6, i64 4 %9 = load float, ptr %8, align 4, !tbaa !3 %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 %11 = load float, ptr %10, align 4, !tbaa !3 - br label %15 + %12 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22 + br label %16 -12: ; preds = %14 - %13 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 +13: ; preds = %15 + %14 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #9 ret void -14: ; preds = %15 +15: ; preds = %16 %indvars.iv.next23 = add nuw nsw i64 %indvars.iv22, 1 %exitcond25.not = icmp eq i64 %indvars.iv.next23, 3 - br i1 %exitcond25.not, label %12, label %.preheader, !llvm.loop !7 + br i1 %exitcond25.not, label %13, label %.preheader, !llvm.loop !7 -15: ; preds = %.preheader, %15 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %15 ] - %16 = getelementptr inbounds nuw [3 x float], ptr %1, i64 0, i64 %indvars.iv - %17 = load float, ptr %16, align 4, !tbaa !3 - %18 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv - %19 = load float, ptr %18, align 4, !tbaa !3 - %20 = fmul float %9, %19 - %21 = tail call float @llvm.fmuladd.f32(float %7, float %17, float %20) - %22 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv - %23 = load float, ptr %22, align 4, !tbaa !3 - %24 = tail call float @llvm.fmuladd.f32(float %11, float %23, float %21) - %25 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22, i64 %indvars.iv - store float %24, ptr %25, align 4, !tbaa !3 +16: ; preds = %.preheader, %16 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %16 ] + %17 = getelementptr inbounds nuw [3 x float], ptr %1, i64 0, i64 %indvars.iv + %18 = load float, ptr %17, align 4, !tbaa !3 + %19 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv + %20 = load float, ptr %19, align 4, !tbaa !3 + %21 = fmul float %9, %20 + %22 = tail call float @llvm.fmuladd.f32(float %7, float %18, float %21) + %23 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv + %24 = load float, ptr %23, align 4, !tbaa !3 + %25 = tail call float @llvm.fmuladd.f32(float %11, float %24, float %22) + %26 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv + store float %25, ptr %26, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %14, label %15, !llvm.loop !9 + br i1 %exitcond.not, label %15, label %16, !llvm.loop !9 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) @@ -270,40 +272,41 @@ define void @lv_matrix_scale(ptr noundef %0, float noundef %1, float noundef %2) call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) #9 br label %.preheader.i -.preheader.i: ; preds = %20, %3 - %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %20 ] +.preheader.i: ; preds = %21, %3 + %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %21 ] %14 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %15 = load float, ptr %14, align 4, !tbaa !3 %16 = getelementptr inbounds nuw i8, ptr %14, i64 4 %17 = load float, ptr %16, align 4, !tbaa !3 %18 = getelementptr inbounds nuw i8, ptr %14, i64 8 %19 = load float, ptr %18, align 4, !tbaa !3 - br label %21 + %20 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i + br label %22 -20: ; preds = %21 +21: ; preds = %22 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -21: ; preds = %21, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %21 ] - %22 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i - %23 = load float, ptr %22, align 4, !tbaa !3 - %24 = getelementptr inbounds nuw [3 x float], ptr %8, i64 0, i64 %indvars.iv.i - %25 = load float, ptr %24, align 4, !tbaa !3 - %26 = fmul float %17, %25 - %27 = tail call float @llvm.fmuladd.f32(float %15, float %23, float %26) - %28 = getelementptr inbounds nuw [3 x float], ptr %11, i64 0, i64 %indvars.iv.i - %29 = load float, ptr %28, align 4, !tbaa !3 - %30 = tail call float @llvm.fmuladd.f32(float %19, float %29, float %27) - %31 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i - store float %30, ptr %31, align 4, !tbaa !3 +22: ; preds = %22, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %22 ] + %23 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i + %24 = load float, ptr %23, align 4, !tbaa !3 + %25 = getelementptr inbounds nuw [3 x float], ptr %8, i64 0, i64 %indvars.iv.i + %26 = load float, ptr %25, align 4, !tbaa !3 + %27 = fmul float %17, %26 + %28 = tail call float @llvm.fmuladd.f32(float %15, float %24, float %27) + %29 = getelementptr inbounds nuw [3 x float], ptr %11, i64 0, i64 %indvars.iv.i + %30 = load float, ptr %29, align 4, !tbaa !3 + %31 = tail call float @llvm.fmuladd.f32(float %19, float %30, float %28) + %32 = getelementptr inbounds nuw [3 x float], ptr %20, i64 0, i64 %indvars.iv.i + store float %31, ptr %32, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %20, label %21, !llvm.loop !9 + br i1 %exitcond.not.i, label %21, label %22, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %20 - %32 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %21 + %33 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #9 ret void @@ -339,40 +342,41 @@ define void @lv_matrix_rotate(ptr noundef %0, float noundef %1) local_unnamed_ad call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %3) #9 br label %.preheader.i -.preheader.i: ; preds = %24, %2 - %indvars.iv22.i = phi i64 [ 0, %2 ], [ %indvars.iv.next23.i, %24 ] +.preheader.i: ; preds = %25, %2 + %indvars.iv22.i = phi i64 [ 0, %2 ], [ %indvars.iv.next23.i, %25 ] %18 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %19 = load float, ptr %18, align 4, !tbaa !3 %20 = getelementptr inbounds nuw i8, ptr %18, i64 4 %21 = load float, ptr %20, align 4, !tbaa !3 %22 = getelementptr inbounds nuw i8, ptr %18, i64 8 %23 = load float, ptr %22, align 4, !tbaa !3 - br label %25 + %24 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22.i + br label %26 -24: ; preds = %25 +25: ; preds = %26 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -25: ; preds = %25, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %25 ] - %26 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv.i - %27 = load float, ptr %26, align 4, !tbaa !3 - %28 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv.i - %29 = load float, ptr %28, align 4, !tbaa !3 - %30 = fmul float %21, %29 - %31 = tail call float @llvm.fmuladd.f32(float %19, float %27, float %30) - %32 = getelementptr inbounds nuw [3 x float], ptr %15, i64 0, i64 %indvars.iv.i - %33 = load float, ptr %32, align 4, !tbaa !3 - %34 = tail call float @llvm.fmuladd.f32(float %23, float %33, float %31) - %35 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i - store float %34, ptr %35, align 4, !tbaa !3 +26: ; preds = %26, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %26 ] + %27 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv.i + %28 = load float, ptr %27, align 4, !tbaa !3 + %29 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv.i + %30 = load float, ptr %29, align 4, !tbaa !3 + %31 = fmul float %21, %30 + %32 = tail call float @llvm.fmuladd.f32(float %19, float %28, float %31) + %33 = getelementptr inbounds nuw [3 x float], ptr %15, i64 0, i64 %indvars.iv.i + %34 = load float, ptr %33, align 4, !tbaa !3 + %35 = tail call float @llvm.fmuladd.f32(float %23, float %34, float %32) + %36 = getelementptr inbounds nuw [3 x float], ptr %24, i64 0, i64 %indvars.iv.i + store float %35, ptr %36, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %24, label %25, !llvm.loop !9 + br i1 %exitcond.not.i, label %25, label %26, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %24 - %36 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %25 + %37 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 ret void @@ -415,40 +419,41 @@ define void @lv_matrix_skew(ptr noundef %0, float noundef %1, float noundef %2) call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) #9 br label %.preheader.i -.preheader.i: ; preds = %26, %3 - %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %26 ] +.preheader.i: ; preds = %27, %3 + %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %27 ] %20 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %21 = load float, ptr %20, align 4, !tbaa !3 %22 = getelementptr inbounds nuw i8, ptr %20, i64 4 %23 = load float, ptr %22, align 4, !tbaa !3 %24 = getelementptr inbounds nuw i8, ptr %20, i64 8 %25 = load float, ptr %24, align 4, !tbaa !3 - br label %27 + %26 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i + br label %28 -26: ; preds = %27 +27: ; preds = %28 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -27: ; preds = %27, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %27 ] - %28 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i - %29 = load float, ptr %28, align 4, !tbaa !3 - %30 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv.i - %31 = load float, ptr %30, align 4, !tbaa !3 - %32 = fmul float %23, %31 - %33 = tail call float @llvm.fmuladd.f32(float %21, float %29, float %32) - %34 = getelementptr inbounds nuw [3 x float], ptr %17, i64 0, i64 %indvars.iv.i - %35 = load float, ptr %34, align 4, !tbaa !3 - %36 = tail call float @llvm.fmuladd.f32(float %25, float %35, float %33) - %37 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i, i64 %indvars.iv.i - store float %36, ptr %37, align 4, !tbaa !3 +28: ; preds = %28, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %28 ] + %29 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i + %30 = load float, ptr %29, align 4, !tbaa !3 + %31 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv.i + %32 = load float, ptr %31, align 4, !tbaa !3 + %33 = fmul float %23, %32 + %34 = tail call float @llvm.fmuladd.f32(float %21, float %30, float %33) + %35 = getelementptr inbounds nuw [3 x float], ptr %17, i64 0, i64 %indvars.iv.i + %36 = load float, ptr %35, align 4, !tbaa !3 + %37 = tail call float @llvm.fmuladd.f32(float %25, float %36, float %34) + %38 = getelementptr inbounds nuw [3 x float], ptr %26, i64 0, i64 %indvars.iv.i + store float %37, ptr %38, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %26, label %27, !llvm.loop !9 + br i1 %exitcond.not.i, label %27, label %28, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %26 - %38 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %27 + %39 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #9 ret void diff --git a/bench/memcached/optimized/thread.ll b/bench/memcached/optimized/thread.ll index d0f533c5d8e..e32915a7444 100644 --- a/bench/memcached/optimized/thread.ll +++ b/bench/memcached/optimized/thread.ll @@ -1131,8 +1131,8 @@ define dso_local void @threadlocal_stats_aggregate(ptr noundef initializes((0, 6 %38 = getelementptr inbounds nuw i8, ptr %0, i64 6440 br label %39 -39: ; preds = %.lr.ph, %215 - %indvars.iv123 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next124, %215 ] +39: ; preds = %.lr.ph, %218 + %indvars.iv123 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next124, %218 ] %40 = load ptr, ptr @threads, align 8, !tbaa !4 %41 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %40, i64 %indvars.iv123, i32 9 %42 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %41) #15 @@ -1287,111 +1287,116 @@ define dso_local void @threadlocal_stats_aggregate(ptr noundef initializes((0, 6 %162 = load i64, ptr %33, align 8, !tbaa !158 %163 = add i64 %162, %161 store i64 %163, ptr %33, align 8, !tbaa !158 - br label %164 + %164 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31 + br label %166 -164: ; preds = %39, %164 - %indvars.iv = phi i64 [ 0, %39 ], [ %indvars.iv.next, %164 ] - %165 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv - %166 = load i64, ptr %165, align 8, !tbaa !159 - %167 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %34, i64 0, i64 %indvars.iv +.preheader: ; preds = %166 + %165 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 32 + br label %207 + +166: ; preds = %39, %166 + %indvars.iv = phi i64 [ 0, %39 ], [ %indvars.iv.next, %166 ] + %167 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv %168 = load i64, ptr %167, align 8, !tbaa !159 - %169 = add i64 %168, %166 - store i64 %169, ptr %167, align 8, !tbaa !159 - %170 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 1 - %171 = load i64, ptr %170, align 8, !tbaa !161 - %172 = getelementptr inbounds nuw i8, ptr %167, i64 8 + %169 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %34, i64 0, i64 %indvars.iv + %170 = load i64, ptr %169, align 8, !tbaa !159 + %171 = add i64 %170, %168 + store i64 %171, ptr %169, align 8, !tbaa !159 + %172 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 1 %173 = load i64, ptr %172, align 8, !tbaa !161 - %174 = add i64 %173, %171 - store i64 %174, ptr %172, align 8, !tbaa !161 - %175 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 2 - %176 = load i64, ptr %175, align 8, !tbaa !162 - %177 = getelementptr inbounds nuw i8, ptr %167, i64 16 + %174 = getelementptr inbounds nuw i8, ptr %169, i64 8 + %175 = load i64, ptr %174, align 8, !tbaa !161 + %176 = add i64 %175, %173 + store i64 %176, ptr %174, align 8, !tbaa !161 + %177 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 2 %178 = load i64, ptr %177, align 8, !tbaa !162 - %179 = add i64 %178, %176 - store i64 %179, ptr %177, align 8, !tbaa !162 - %180 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 3 - %181 = load i64, ptr %180, align 8, !tbaa !163 - %182 = getelementptr inbounds nuw i8, ptr %167, i64 24 + %179 = getelementptr inbounds nuw i8, ptr %169, i64 16 + %180 = load i64, ptr %179, align 8, !tbaa !162 + %181 = add i64 %180, %178 + store i64 %181, ptr %179, align 8, !tbaa !162 + %182 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 3 %183 = load i64, ptr %182, align 8, !tbaa !163 - %184 = add i64 %183, %181 - store i64 %184, ptr %182, align 8, !tbaa !163 - %185 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 4 - %186 = load i64, ptr %185, align 8, !tbaa !164 - %187 = getelementptr inbounds nuw i8, ptr %167, i64 32 + %184 = getelementptr inbounds nuw i8, ptr %169, i64 24 + %185 = load i64, ptr %184, align 8, !tbaa !163 + %186 = add i64 %185, %183 + store i64 %186, ptr %184, align 8, !tbaa !163 + %187 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 4 %188 = load i64, ptr %187, align 8, !tbaa !164 - %189 = add i64 %188, %186 - store i64 %189, ptr %187, align 8, !tbaa !164 - %190 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 5 - %191 = load i64, ptr %190, align 8, !tbaa !165 - %192 = getelementptr inbounds nuw i8, ptr %167, i64 40 + %189 = getelementptr inbounds nuw i8, ptr %169, i64 32 + %190 = load i64, ptr %189, align 8, !tbaa !164 + %191 = add i64 %190, %188 + store i64 %191, ptr %189, align 8, !tbaa !164 + %192 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 5 %193 = load i64, ptr %192, align 8, !tbaa !165 - %194 = add i64 %193, %191 - store i64 %194, ptr %192, align 8, !tbaa !165 - %195 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 6 - %196 = load i64, ptr %195, align 8, !tbaa !166 - %197 = getelementptr inbounds nuw i8, ptr %167, i64 48 + %194 = getelementptr inbounds nuw i8, ptr %169, i64 40 + %195 = load i64, ptr %194, align 8, !tbaa !165 + %196 = add i64 %195, %193 + store i64 %196, ptr %194, align 8, !tbaa !165 + %197 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 6 %198 = load i64, ptr %197, align 8, !tbaa !166 - %199 = add i64 %198, %196 - store i64 %199, ptr %197, align 8, !tbaa !166 - %200 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31, i64 %indvars.iv, i32 7 - %201 = load i64, ptr %200, align 8, !tbaa !167 - %202 = getelementptr inbounds nuw i8, ptr %167, i64 56 + %199 = getelementptr inbounds nuw i8, ptr %169, i64 48 + %200 = load i64, ptr %199, align 8, !tbaa !166 + %201 = add i64 %200, %198 + store i64 %201, ptr %199, align 8, !tbaa !166 + %202 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv, i32 7 %203 = load i64, ptr %202, align 8, !tbaa !167 - %204 = add i64 %203, %201 - store i64 %204, ptr %202, align 8, !tbaa !167 + %204 = getelementptr inbounds nuw i8, ptr %169, i64 56 + %205 = load i64, ptr %204, align 8, !tbaa !167 + %206 = add i64 %205, %203 + store i64 %206, ptr %204, align 8, !tbaa !167 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 64 - br i1 %exitcond.not, label %.preheader, label %164, !llvm.loop !168 - -.preheader: ; preds = %164, %.preheader - %indvars.iv119 = phi i64 [ %indvars.iv.next120, %.preheader ], [ 0, %164 ] - %205 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 32, i64 %indvars.iv119 - %206 = load i64, ptr %205, align 8, !tbaa !57 - %207 = getelementptr inbounds nuw [256 x i64], ptr %35, i64 0, i64 %indvars.iv119 - %208 = load i64, ptr %207, align 8, !tbaa !57 - %209 = add i64 %208, %206 - store i64 %209, ptr %207, align 8, !tbaa !57 - %210 = load i64, ptr %205, align 8, !tbaa !57 - %211 = shl i64 %indvars.iv119, 6 - %212 = and i64 %211, 4032 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %212 - %213 = load i64, ptr %gep, align 8, !tbaa !161 - %214 = add i64 %213, %210 - store i64 %214, ptr %gep, align 8, !tbaa !161 + br i1 %exitcond.not, label %.preheader, label %166, !llvm.loop !168 + +207: ; preds = %.preheader, %207 + %indvars.iv119 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next120, %207 ] + %208 = getelementptr inbounds nuw [256 x i64], ptr %165, i64 0, i64 %indvars.iv119 + %209 = load i64, ptr %208, align 8, !tbaa !57 + %210 = getelementptr inbounds nuw [256 x i64], ptr %35, i64 0, i64 %indvars.iv119 + %211 = load i64, ptr %210, align 8, !tbaa !57 + %212 = add i64 %211, %209 + store i64 %212, ptr %210, align 8, !tbaa !57 + %213 = load i64, ptr %208, align 8, !tbaa !57 + %214 = shl i64 %indvars.iv119, 6 + %215 = and i64 %214, 4032 + %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %215 + %216 = load i64, ptr %gep, align 8, !tbaa !161 + %217 = add i64 %216, %213 + store i64 %217, ptr %gep, align 8, !tbaa !161 %indvars.iv.next120 = add nuw nsw i64 %indvars.iv119, 1 %exitcond122.not = icmp eq i64 %indvars.iv.next120, 256 - br i1 %exitcond122.not, label %215, label %.preheader, !llvm.loop !169 - -215: ; preds = %.preheader - %216 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 12 - %217 = load ptr, ptr %216, align 8, !tbaa !170 - %218 = getelementptr inbounds nuw i8, ptr %217, i64 76 - %219 = load i32, ptr %218, align 4, !tbaa !171 - %220 = sext i32 %219 to i64 - %221 = load i64, ptr %36, align 8, !tbaa !176 - %222 = add i64 %221, %220 - store i64 %222, ptr %36, align 8, !tbaa !176 - %223 = shl nsw i32 %219, 14 - %224 = sext i32 %223 to i64 - %225 = load i64, ptr %37, align 8, !tbaa !177 - %226 = add i64 %225, %224 - store i64 %226, ptr %37, align 8, !tbaa !177 - %227 = getelementptr inbounds nuw i8, ptr %217, i64 80 - %228 = load i32, ptr %227, align 8, !tbaa !178 - %229 = shl nsw i32 %228, 14 - %230 = sext i32 %229 to i64 - %231 = load i64, ptr %38, align 8, !tbaa !179 - %232 = add i64 %231, %230 - store i64 %232, ptr %38, align 8, !tbaa !179 - %233 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9 - %234 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %233) #15 + br i1 %exitcond122.not, label %218, label %207, !llvm.loop !169 + +218: ; preds = %207 + %219 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 12 + %220 = load ptr, ptr %219, align 8, !tbaa !170 + %221 = getelementptr inbounds nuw i8, ptr %220, i64 76 + %222 = load i32, ptr %221, align 4, !tbaa !171 + %223 = sext i32 %222 to i64 + %224 = load i64, ptr %36, align 8, !tbaa !176 + %225 = add i64 %224, %223 + store i64 %225, ptr %36, align 8, !tbaa !176 + %226 = shl nsw i32 %222, 14 + %227 = sext i32 %226 to i64 + %228 = load i64, ptr %37, align 8, !tbaa !177 + %229 = add i64 %228, %227 + store i64 %229, ptr %37, align 8, !tbaa !177 + %230 = getelementptr inbounds nuw i8, ptr %220, i64 80 + %231 = load i32, ptr %230, align 8, !tbaa !178 + %232 = shl nsw i32 %231, 14 + %233 = sext i32 %232 to i64 + %234 = load i64, ptr %38, align 8, !tbaa !179 + %235 = add i64 %234, %233 + store i64 %235, ptr %38, align 8, !tbaa !179 + %236 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9 + %237 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %236) #15 %indvars.iv.next124 = add nuw nsw i64 %indvars.iv123, 1 - %235 = load i32, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 84), align 4, !tbaa !17 - %236 = sext i32 %235 to i64 - %237 = icmp slt i64 %indvars.iv.next124, %236 - br i1 %237, label %39, label %._crit_edge, !llvm.loop !180 + %238 = load i32, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 84), align 4, !tbaa !17 + %239 = sext i32 %238 to i64 + %240 = icmp slt i64 %indvars.iv.next124, %239 + br i1 %240, label %39, label %._crit_edge, !llvm.loop !180 -._crit_edge: ; preds = %215, %1 +._crit_edge: ; preds = %218, %1 ret void } diff --git a/bench/meshlab/optimized/cubemap.ll b/bench/meshlab/optimized/cubemap.ll index 5e754dc6bd8..a0fc84b0993 100644 --- a/bench/meshlab/optimized/cubemap.ll +++ b/bench/meshlab/optimized/cubemap.ll @@ -146,37 +146,38 @@ _ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit: ; preds = %13 %16 = getelementptr inbounds nuw i8, ptr %0, i64 4 br label %17 -17: ; preds = %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit, %29 - %indvars.iv14 = phi i64 [ 0, %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit ], [ %indvars.iv.next15, %29 ] +17: ; preds = %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit, %30 + %indvars.iv14 = phi i64 [ 0, %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit ], [ %indvars.iv.next15, %30 ] %18 = getelementptr inbounds nuw [6 x i32], ptr %16, i64 0, i64 %indvars.iv14 %19 = load i32, ptr %18, align 4 call void @glBindTexture(i32 noundef 3553, i32 noundef %19) call void @glBegin(i32 noundef 7) - br label %20 - -20: ; preds = %17, %20 - %indvars.iv = phi i64 [ 0, %17 ], [ %indvars.iv.next, %20 ] - %21 = getelementptr inbounds nuw [4 x [2 x float]], ptr @_ZL8tex_vert, i64 0, i64 %indvars.iv - %22 = load float, ptr %21, align 8 - %23 = getelementptr inbounds nuw i8, ptr %21, i64 4 - %24 = load float, ptr %23, align 4 - call void @glTexCoord2f(float noundef %22, float noundef %24) - %25 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv14, i64 %indvars.iv - %26 = load i32, ptr %25, align 4 - %27 = sext i32 %26 to i64 - %28 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %27 - call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %28) + %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv14 + br label %21 + +21: ; preds = %17, %21 + %indvars.iv = phi i64 [ 0, %17 ], [ %indvars.iv.next, %21 ] + %22 = getelementptr inbounds nuw [4 x [2 x float]], ptr @_ZL8tex_vert, i64 0, i64 %indvars.iv + %23 = load float, ptr %22, align 8 + %24 = getelementptr inbounds nuw i8, ptr %22, i64 4 + %25 = load float, ptr %24, align 4 + call void @glTexCoord2f(float noundef %23, float noundef %25) + %26 = getelementptr inbounds nuw [4 x i32], ptr %20, i64 0, i64 %indvars.iv + %27 = load i32, ptr %26, align 4 + %28 = sext i32 %27 to i64 + %29 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %28 + call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %29) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %29, label %20, !llvm.loop !11 + br i1 %exitcond.not, label %30, label %21, !llvm.loop !11 -29: ; preds = %20 +30: ; preds = %21 call void @glEnd() %indvars.iv.next15 = add nuw nsw i64 %indvars.iv14, 1 %exitcond17.not = icmp eq i64 %indvars.iv.next15, 6 - br i1 %exitcond17.not, label %30, label %17, !llvm.loop !12 + br i1 %exitcond17.not, label %31, label %17, !llvm.loop !12 -30: ; preds = %29 +31: ; preds = %30 call void @glDepthMask(i8 noundef zeroext 1) call void @glPopMatrix() call void @glPopAttrib() @@ -254,42 +255,43 @@ _ZNK3vcg8Matrix44IfE9transposeEv.exit.i: ; preds = %18 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 br label %19 -19: ; preds = %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i, %32 - %indvars.iv15 = phi i64 [ 0, %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i ], [ %indvars.iv.next16, %32 ] +19: ; preds = %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i, %33 + %indvars.iv15 = phi i64 [ 0, %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i ], [ %indvars.iv.next16, %33 ] call void @glBegin(i32 noundef 7) + %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv15 br label %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit _ZN3vcg8glNormalERKNS_6Point3IfEE.exit: ; preds = %19, %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit %indvars.iv = phi i64 [ 0, %19 ], [ %indvars.iv.next, %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit ] - %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv15, i64 %indvars.iv - %21 = load i32, ptr %20, align 4 - %22 = sext i32 %21 to i64 - %23 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %22 - %24 = load float, ptr %23, align 4 - %25 = fneg float %24 - %26 = getelementptr inbounds nuw i8, ptr %23, i64 4 - %27 = load float, ptr %26, align 4 - %28 = fneg float %27 - %29 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %30 = load float, ptr %29, align 4 - %31 = fneg float %30 - %.sroa.0.0.vec.insert.i = insertelement <2 x float> poison, float %25, i64 0 - %.sroa.0.4.vec.insert.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i, float %28, i64 1 + %21 = getelementptr inbounds nuw [4 x i32], ptr %20, i64 0, i64 %indvars.iv + %22 = load i32, ptr %21, align 4 + %23 = sext i32 %22 to i64 + %24 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %23 + %25 = load float, ptr %24, align 4 + %26 = fneg float %25 + %27 = getelementptr inbounds nuw i8, ptr %24, i64 4 + %28 = load float, ptr %27, align 4 + %29 = fneg float %28 + %30 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %31 = load float, ptr %30, align 4 + %32 = fneg float %31 + %.sroa.0.0.vec.insert.i = insertelement <2 x float> poison, float %26, i64 0 + %.sroa.0.4.vec.insert.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i, float %29, i64 1 store <2 x float> %.sroa.0.4.vec.insert.i, ptr %5, align 8 - store float %31, ptr %.sroa.2.0..sroa_idx, align 8 + store float %32, ptr %.sroa.2.0..sroa_idx, align 8 call void @glNormal3fv(ptr noundef nonnull align 4 dereferenceable(12) %5) - call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %23) + call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %24) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %32, label %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit, !llvm.loop !16 + br i1 %exitcond.not, label %33, label %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit, !llvm.loop !16 -32: ; preds = %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit +33: ; preds = %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit call void @glEnd() %indvars.iv.next16 = add nuw nsw i64 %indvars.iv15, 1 %exitcond18.not = icmp eq i64 %indvars.iv.next16, 6 - br i1 %exitcond18.not, label %33, label %19, !llvm.loop !17 + br i1 %exitcond18.not, label %34, label %19, !llvm.loop !17 -33: ; preds = %32 +34: ; preds = %33 call void @glMatrixMode(i32 noundef 5890) call void @glPopMatrix() call void @glMatrixMode(i32 noundef 5888) diff --git a/bench/meshlab/optimized/filter_layer.ll b/bench/meshlab/optimized/filter_layer.ll index b1278bb3bef..a43802da4f3 100644 --- a/bench/meshlab/optimized/filter_layer.ll +++ b/bench/meshlab/optimized/filter_layer.ll @@ -26623,8 +26623,8 @@ define linkonce_odr void @_ZN3vcg3tri6AppendI6CMeshOS2_E13ImportFaceAdjERS2_RKS2 %16 = ptrtoint ptr %2 to i64 br label %17 -17: ; preds = %.preheader74, %69 - %indvars.iv = phi i64 [ 0, %.preheader74 ], [ %indvars.iv.next, %69 ] +17: ; preds = %.preheader74, %71 + %indvars.iv = phi i64 [ 0, %.preheader74 ], [ %indvars.iv.next, %71 ] %18 = load ptr, ptr %3, align 8 %19 = getelementptr inbounds nuw i8, ptr %18, i64 273 %20 = load i8, ptr %19, align 1 @@ -26654,7 +26654,7 @@ _ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %38 = getelementptr inbounds i8, ptr %36, i64 %37 %39 = load i64, ptr %38, align 8 %.not = icmp eq i64 %39, -1 - br i1 %.not, label %69, label %40 + br i1 %.not, label %71, label %40 40: ; preds = %_ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfEEEE4cFFpEi.exit %41 = load ptr, ptr %15, align 8 @@ -26676,132 +26676,137 @@ _ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %56 = sub i64 %14, %55 %57 = sdiv exact i64 %56, 48 %58 = load ptr, ptr %53, align 8 - %59 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %58, i64 %57, i32 1, i64 %indvars.iv - %60 = load i8, ptr %59, align 1 - %61 = load ptr, ptr %2, align 8 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 240 - %63 = load ptr, ptr %61, align 8 - %64 = ptrtoint ptr %63 to i64 - %65 = sub i64 %16, %64 - %66 = sdiv exact i64 %65, 48 - %67 = load ptr, ptr %62, align 8 - %68 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %67, i64 %66, i32 1, i64 %indvars.iv - store i8 %60, ptr %68, align 1 - br label %69 + %59 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %58, i64 %57, i32 1 + %60 = getelementptr inbounds nuw [3 x i8], ptr %59, i64 0, i64 %indvars.iv + %61 = load i8, ptr %60, align 1 + %62 = load ptr, ptr %2, align 8 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 240 + %64 = load ptr, ptr %62, align 8 + %65 = ptrtoint ptr %64 to i64 + %66 = sub i64 %16, %65 + %67 = sdiv exact i64 %66, 48 + %68 = load ptr, ptr %63, align 8 + %69 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %68, i64 %67, i32 1 + %70 = getelementptr inbounds nuw [3 x i8], ptr %69, i64 0, i64 %indvars.iv + store i8 %61, ptr %70, align 1 + br label %71 -69: ; preds = %_ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfEEEE4cFFpEi.exit, %40 +71: ; preds = %_ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfEEEE4cFFpEi.exit, %40 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %.loopexit75, label %17, !llvm.loop !235 -.loopexit75: ; preds = %69, %5 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 576 - %71 = load i8, ptr %70, align 8 - %72 = trunc i8 %71 to i1 - %73 = getelementptr inbounds nuw i8, ptr %1, i64 576 - %74 = load i8, ptr %73, align 8 - %75 = trunc i8 %74 to i1 - %or.cond73 = select i1 %72, i1 %75, i1 false +.loopexit75: ; preds = %71, %5 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 576 + %73 = load i8, ptr %72, align 8 + %74 = trunc i8 %73 to i1 + %75 = getelementptr inbounds nuw i8, ptr %1, i64 576 + %76 = load i8, ptr %75, align 8 + %77 = trunc i8 %76 to i1 + %or.cond73 = select i1 %74, i1 %77, i1 false br i1 %or.cond73, label %.preheader, label %.loopexit .preheader: ; preds = %.loopexit75 - %76 = ptrtoint ptr %3 to i64 - %77 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %78 = getelementptr inbounds nuw i8, ptr %1, i64 304 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 304 - %80 = ptrtoint ptr %2 to i64 - br label %81 - -81: ; preds = %.preheader, %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit + %78 = ptrtoint ptr %3 to i64 + %79 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %80 = getelementptr inbounds nuw i8, ptr %1, i64 304 + %81 = getelementptr inbounds nuw i8, ptr %0, i64 304 + %82 = ptrtoint ptr %2 to i64 + br label %83 + +83: ; preds = %.preheader, %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit %indvars.iv79 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next80, %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit ] - %82 = load ptr, ptr %3, align 8 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 272 - %84 = load i8, ptr %83, align 8 - %85 = trunc i8 %84 to i1 - br i1 %85, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge - -_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit: ; preds = %81 - %.pre = load ptr, ptr %82, align 8 - %86 = getelementptr inbounds nuw i8, ptr %82, i64 216 - %87 = ptrtoint ptr %.pre to i64 - %88 = sub i64 %76, %87 - %89 = sdiv exact i64 %88, 48 - %90 = load ptr, ptr %86, align 8 - %91 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %90, i64 %89 - %92 = getelementptr inbounds nuw [3 x ptr], ptr %91, i64 0, i64 %indvars.iv79 - %93 = load ptr, ptr %92, align 8 - %94 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %90, i64 %89, i32 1, i64 %indvars.iv79 - %95 = load i8, ptr %94, align 1 - %96 = icmp eq ptr %93, null - br i1 %96, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, label %97 + %84 = load ptr, ptr %3, align 8 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 272 + %86 = load i8, ptr %85, align 8 + %87 = trunc i8 %86 to i1 + br i1 %87, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge + +_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit: ; preds = %83 + %.pre = load ptr, ptr %84, align 8 + %88 = getelementptr inbounds nuw i8, ptr %84, i64 216 + %89 = ptrtoint ptr %.pre to i64 + %90 = sub i64 %78, %89 + %91 = sdiv exact i64 %90, 48 + %92 = load ptr, ptr %88, align 8 + %93 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %92, i64 %91 + %94 = getelementptr inbounds nuw [3 x ptr], ptr %93, i64 0, i64 %indvars.iv79 + %95 = load ptr, ptr %94, align 8 + %96 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %92, i64 %91, i32 1 + %97 = getelementptr inbounds nuw [3 x i8], ptr %96, i64 0, i64 %indvars.iv79 + %98 = load i8, ptr %97, align 1 + %99 = icmp eq ptr %95, null + br i1 %99, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, label %100 -_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge: ; preds = %81, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit +_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge: ; preds = %83, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit %.pre84 = load ptr, ptr %2, align 8 br label %.thread -97: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit - %98 = load ptr, ptr %78, align 8 - %99 = ptrtoint ptr %93 to i64 - %100 = ptrtoint ptr %98 to i64 - %101 = sub i64 %99, %100 - %102 = load ptr, ptr %77, align 8 - %103 = sdiv exact i64 %101, 6 - %104 = getelementptr inbounds i8, ptr %102, i64 %103 - %105 = load i64, ptr %104, align 8 - %106 = icmp eq i64 %105, -1 +100: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit + %101 = load ptr, ptr %80, align 8 + %102 = ptrtoint ptr %95 to i64 + %103 = ptrtoint ptr %101 to i64 + %104 = sub i64 %102, %103 + %105 = load ptr, ptr %79, align 8 + %106 = sdiv exact i64 %104, 6 + %107 = getelementptr inbounds i8, ptr %105, i64 %106 + %108 = load i64, ptr %107, align 8 + %109 = icmp eq i64 %108, -1 %.pre85 = load ptr, ptr %2, align 8 - br i1 %106, label %.thread, label %118 - -.thread: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, %97 - %107 = phi ptr [ %.pre84, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge ], [ %.pre85, %97 ] - %108 = getelementptr inbounds nuw i8, ptr %107, i64 216 - %109 = load ptr, ptr %107, align 8 - %110 = ptrtoint ptr %109 to i64 - %111 = sub i64 %80, %110 - %112 = sdiv exact i64 %111, 48 - %113 = load ptr, ptr %108, align 8 - %114 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %113, i64 %112, i32 1, i64 %indvars.iv79 - %115 = load i8, ptr %114, align 1 - %.not.i = icmp eq i8 %115, -1 - br i1 %.not.i, label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit, label %116 + br i1 %109, label %.thread, label %122 -116: ; preds = %.thread - %117 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %113, i64 %112 +.thread: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, %100 + %110 = phi ptr [ %.pre84, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge ], [ %.pre85, %100 ] + %111 = getelementptr inbounds nuw i8, ptr %110, i64 216 + %112 = load ptr, ptr %110, align 8 + %113 = ptrtoint ptr %112 to i64 + %114 = sub i64 %82, %113 + %115 = sdiv exact i64 %114, 48 + %116 = load ptr, ptr %111, align 8 + %117 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %116, i64 %115, i32 1 + %118 = getelementptr inbounds nuw [3 x i8], ptr %117, i64 0, i64 %indvars.iv79 + %119 = load i8, ptr %118, align 1 + %.not.i = icmp eq i8 %119, -1 + br i1 %.not.i, label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit, label %120 + +120: ; preds = %.thread + %121 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %116, i64 %115 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split -118: ; preds = %97 - %119 = load ptr, ptr %79, align 8 - %120 = getelementptr inbounds %class.CFaceO, ptr %119, i64 %105 - %121 = getelementptr inbounds nuw i8, ptr %.pre85, i64 216 - %122 = load ptr, ptr %.pre85, align 8 - %123 = ptrtoint ptr %122 to i64 - %124 = sub i64 %80, %123 - %125 = sdiv exact i64 %124, 48 - %126 = load ptr, ptr %121, align 8 - %127 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %126, i64 %125 +122: ; preds = %100 + %123 = load ptr, ptr %81, align 8 + %124 = getelementptr inbounds %class.CFaceO, ptr %123, i64 %108 + %125 = getelementptr inbounds nuw i8, ptr %.pre85, i64 216 + %126 = load ptr, ptr %.pre85, align 8 + %127 = ptrtoint ptr %126 to i64 + %128 = sub i64 %82, %127 + %129 = sdiv exact i64 %128, 48 + %130 = load ptr, ptr %125, align 8 + %131 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %130, i64 %129 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split -_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split: ; preds = %118, %116 - %.sink104 = phi ptr [ %117, %116 ], [ %127, %118 ] - %.sink102 = phi ptr [ null, %116 ], [ %120, %118 ] - %.sink = phi i8 [ -1, %116 ], [ %95, %118 ] - %128 = getelementptr inbounds nuw [3 x ptr], ptr %.sink104, i64 0, i64 %indvars.iv79 - store ptr %.sink102, ptr %128, align 8 - %129 = load ptr, ptr %2, align 8 - %130 = getelementptr inbounds nuw i8, ptr %129, i64 216 - %131 = load ptr, ptr %129, align 8 - %132 = ptrtoint ptr %131 to i64 - %133 = sub i64 %80, %132 - %134 = sdiv exact i64 %133, 48 - %135 = load ptr, ptr %130, align 8 - %136 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %135, i64 %134, i32 1, i64 %indvars.iv79 - store i8 %.sink, ptr %136, align 1 +_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split: ; preds = %122, %120 + %.sink105 = phi ptr [ %121, %120 ], [ %131, %122 ] + %.sink103 = phi ptr [ null, %120 ], [ %124, %122 ] + %.sink = phi i8 [ -1, %120 ], [ %98, %122 ] + %132 = getelementptr inbounds nuw [3 x ptr], ptr %.sink105, i64 0, i64 %indvars.iv79 + store ptr %.sink103, ptr %132, align 8 + %133 = load ptr, ptr %2, align 8 + %134 = getelementptr inbounds nuw i8, ptr %133, i64 216 + %135 = load ptr, ptr %133, align 8 + %136 = ptrtoint ptr %135 to i64 + %137 = sub i64 %82, %136 + %138 = sdiv exact i64 %137, 48 + %139 = load ptr, ptr %134, align 8 + %140 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %139, i64 %138, i32 1 + %141 = getelementptr inbounds nuw [3 x i8], ptr %140, i64 0, i64 %indvars.iv79 + store i8 %.sink, ptr %141, align 1 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit _ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit: ; preds = %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split, %.thread %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 %exitcond82.not = icmp eq i64 %indvars.iv.next80, 3 - br i1 %exitcond82.not, label %.loopexit, label %81, !llvm.loop !236 + br i1 %exitcond82.not, label %.loopexit, label %83, !llvm.loop !236 .loopexit: ; preds = %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit, %.loopexit75 ret void diff --git a/bench/meshlab/optimized/mesh_model.ll b/bench/meshlab/optimized/mesh_model.ll index 0ec59e71c5c..45a4fa7b7e7 100644 --- a/bench/meshlab/optimized/mesh_model.ll +++ b/bench/meshlab/optimized/mesh_model.ll @@ -4605,7 +4605,7 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE8FaceFaceERS2_(ptr 6: ; preds = %1 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %2, i8 0, i64 24, i1 false) invoke void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE14FillEdgeVectorERS2_RSt6vectorINS3_5PEdgeESaIS6_EEb(ptr noundef nonnull align 8 dereferenceable(1196) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, i1 noundef zeroext true) - to label %7 unwind label %67 + to label %7 unwind label %68 7: ; preds = %6 %8 = load ptr, ptr %2, align 8 @@ -4623,11 +4623,11 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE8FaceFaceERS2_(ptr %17 = shl nuw nsw i64 %16, 1 %18 = xor i64 %17, 126 invoke void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEElNS0_5__ops15_Iter_less_iterEEvT_SF_T0_T1_(ptr %8, ptr %10, i64 noundef %18) - to label %.noexc unwind label %67 + to label %.noexc unwind label %68 .noexc: ; preds = %11 invoke void @_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_T0_(ptr %8, ptr %10) - to label %.noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge unwind label %67 + to label %.noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge unwind label %68 .noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge: ; preds = %.noexc %.pre = load ptr, ptr %2, align 8 @@ -4639,10 +4639,10 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd %.sroa.028.0.ph = phi ptr [ %8, %7 ], [ %.pre, %.noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge ] br label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit -_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader, %103 - %19 = phi ptr [ %104, %103 ], [ %.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] - %.sroa.023.0 = phi ptr [ %106, %103 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] - %.sroa.028.0 = phi ptr [ %.sroa.028.1, %103 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] +_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader, %105 + %19 = phi ptr [ %106, %105 ], [ %.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] + %.sroa.023.0 = phi ptr [ %108, %105 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] + %.sroa.028.0 = phi ptr [ %.sroa.028.1, %105 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] %20 = icmp eq ptr %.sroa.023.0, %19 br i1 %20, label %.critedge, label %21 @@ -4656,7 +4656,7 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd %28 = load ptr, ptr %27, align 8 %29 = icmp eq ptr %26, %28 %30 = select i1 %24, i1 %29, i1 false - br i1 %30, label %103, label %.critedge + br i1 %30, label %105, label %.critedge .critedge: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit, %21 %31 = getelementptr inbounds i8, ptr %.sroa.023.0, i64 -32 @@ -4697,82 +4697,84 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd %61 = sub i64 %59, %60 %62 = sdiv exact i64 %61, 48 %63 = load ptr, ptr %57, align 8 - %64 = sext i32 %55 to i64 - %65 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %63, i64 %62, i32 1, i64 %64 - store i8 %53, ptr %65, align 1 - %66 = icmp ult ptr %33, %31 - br i1 %66, label %.lr.ph, label %._crit_edge, !llvm.loop !50 - -67: ; preds = %.noexc, %11, %6 - %68 = landingpad { ptr, i32 } + %64 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %63, i64 %62, i32 1 + %65 = sext i32 %55 to i64 + %66 = getelementptr inbounds [3 x i8], ptr %64, i64 0, i64 %65 + store i8 %53, ptr %66, align 1 + %67 = icmp ult ptr %33, %31 + br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !50 + +68: ; preds = %.noexc, %11, %6 + %69 = landingpad { ptr, i32 } cleanup - %69 = load ptr, ptr %2, align 8 - %.not.i.i.i = icmp eq ptr %69, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit, label %70 + %70 = load ptr, ptr %2, align 8 + %.not.i.i.i = icmp eq ptr %70, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit, label %71 -70: ; preds = %67 - call void @_ZdlPv(ptr noundef nonnull %69) #29 +71: ; preds = %68 + call void @_ZdlPv(ptr noundef nonnull %70) #29 br label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit -_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit: ; preds = %67, %70 - resume { ptr, i32 } %68 +_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit: ; preds = %68, %71 + resume { ptr, i32 } %69 ._crit_edge: ; preds = %.lr.ph, %.critedge %.sroa.012.0.lcssa = phi ptr [ %.sroa.028.0, %.critedge ], [ %33, %.lr.ph ] - %71 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 16 - %72 = load ptr, ptr %71, align 8 - %73 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 16 - %74 = load ptr, ptr %73, align 8 - %75 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 24 - %76 = load i32, ptr %75, align 8 - %77 = load ptr, ptr %74, align 8 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 240 - %79 = load ptr, ptr %77, align 8 - %80 = ptrtoint ptr %74 to i64 - %81 = ptrtoint ptr %79 to i64 - %82 = sub i64 %80, %81 - %83 = sdiv exact i64 %82, 48 - %84 = load ptr, ptr %78, align 8 - %85 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %84, i64 %83 - %86 = sext i32 %76 to i64 - %87 = getelementptr inbounds [3 x ptr], ptr %85, i64 0, i64 %86 - store ptr %72, ptr %87, align 8 - %88 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 24 - %89 = load i32, ptr %88, align 8 - %90 = trunc i32 %89 to i8 - %91 = load ptr, ptr %73, align 8 - %92 = load i32, ptr %75, align 8 - %93 = load ptr, ptr %91, align 8 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 240 - %95 = load ptr, ptr %93, align 8 - %96 = ptrtoint ptr %91 to i64 - %97 = ptrtoint ptr %95 to i64 - %98 = sub i64 %96, %97 - %99 = sdiv exact i64 %98, 48 - %100 = load ptr, ptr %94, align 8 - %101 = sext i32 %92 to i64 - %102 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %100, i64 %99, i32 1, i64 %101 - store i8 %90, ptr %102, align 1 + %72 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 16 + %73 = load ptr, ptr %72, align 8 + %74 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 16 + %75 = load ptr, ptr %74, align 8 + %76 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 24 + %77 = load i32, ptr %76, align 8 + %78 = load ptr, ptr %75, align 8 + %79 = getelementptr inbounds nuw i8, ptr %78, i64 240 + %80 = load ptr, ptr %78, align 8 + %81 = ptrtoint ptr %75 to i64 + %82 = ptrtoint ptr %80 to i64 + %83 = sub i64 %81, %82 + %84 = sdiv exact i64 %83, 48 + %85 = load ptr, ptr %79, align 8 + %86 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %85, i64 %84 + %87 = sext i32 %77 to i64 + %88 = getelementptr inbounds [3 x ptr], ptr %86, i64 0, i64 %87 + store ptr %73, ptr %88, align 8 + %89 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 24 + %90 = load i32, ptr %89, align 8 + %91 = trunc i32 %90 to i8 + %92 = load ptr, ptr %74, align 8 + %93 = load i32, ptr %76, align 8 + %94 = load ptr, ptr %92, align 8 + %95 = getelementptr inbounds nuw i8, ptr %94, i64 240 + %96 = load ptr, ptr %94, align 8 + %97 = ptrtoint ptr %92 to i64 + %98 = ptrtoint ptr %96 to i64 + %99 = sub i64 %97, %98 + %100 = sdiv exact i64 %99, 48 + %101 = load ptr, ptr %95, align 8 + %102 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %101, i64 %100, i32 1 + %103 = sext i32 %93 to i64 + %104 = getelementptr inbounds [3 x i8], ptr %102, i64 0, i64 %103 + store i8 %91, ptr %104, align 1 %.pre33 = load ptr, ptr %9, align 8 - br label %103 + br label %105 -103: ; preds = %._crit_edge, %21 - %104 = phi ptr [ %.pre33, %._crit_edge ], [ %19, %21 ] +105: ; preds = %._crit_edge, %21 + %106 = phi ptr [ %.pre33, %._crit_edge ], [ %19, %21 ] %.sroa.028.1 = phi ptr [ %.sroa.023.0, %._crit_edge ], [ %.sroa.028.0, %21 ] - %105 = icmp eq ptr %.sroa.023.0, %104 - %106 = getelementptr inbounds nuw i8, ptr %.sroa.023.0, i64 32 - br i1 %105, label %107, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit, !llvm.loop !51 + %107 = icmp eq ptr %.sroa.023.0, %106 + %108 = getelementptr inbounds nuw i8, ptr %.sroa.023.0, i64 32 + br i1 %107, label %109, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit, !llvm.loop !51 -107: ; preds = %103 - %108 = load ptr, ptr %2, align 8 - %.not.i.i.i6 = icmp eq ptr %108, null - br i1 %.not.i.i.i6, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7, label %109 +109: ; preds = %105 + %110 = load ptr, ptr %2, align 8 + %.not.i.i.i6 = icmp eq ptr %110, null + br i1 %.not.i.i.i6, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7, label %111 -109: ; preds = %107 - call void @_ZdlPv(ptr noundef nonnull %108) #29 +111: ; preds = %109 + call void @_ZdlPv(ptr noundef nonnull %110) #29 br label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7 -_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7: ; preds = %109, %107, %1 +_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7: ; preds = %111, %109, %1 ret void } @@ -4826,8 +4828,8 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( br i1 %.not3439, label %._crit_edge43, label %.lr.ph42 .lr.ph42: ; preds = %._crit_edge, %.loopexit - %32 = phi ptr [ %107, %.loopexit ], [ %31, %._crit_edge ] - %.sroa.018.040 = phi ptr [ %108, %.loopexit ], [ %29, %._crit_edge ] + %32 = phi ptr [ %108, %.loopexit ], [ %31, %._crit_edge ] + %.sroa.018.040 = phi ptr [ %109, %.loopexit ], [ %29, %._crit_edge ] %33 = getelementptr inbounds nuw i8, ptr %.sroa.018.040, i64 32 %34 = load i32, ptr %33, align 8 %35 = and i32 %34, 1 @@ -4887,36 +4889,37 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( %79 = sub i64 %37, %78 %80 = sdiv exact i64 %79, 48 %81 = load ptr, ptr %76, align 8 - %82 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %81, i64 %80, i32 1, i64 %indvars.iv - store i8 %74, ptr %82, align 1 - %83 = load ptr, ptr %39, align 8 - %84 = load ptr, ptr %83, align 8 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 216 - %86 = load ptr, ptr %84, align 8 - %87 = ptrtoint ptr %83 to i64 - %88 = ptrtoint ptr %86 to i64 - %89 = sub i64 %87, %88 - %90 = sdiv exact i64 %89, 48 - %sext.i16 = shl i64 %90, 32 - %91 = load ptr, ptr %85, align 8 - %92 = ashr exact i64 %sext.i16, 28 - %93 = getelementptr inbounds i8, ptr %91, i64 %92 - store ptr %.sroa.018.040, ptr %93, align 8 - %94 = load ptr, ptr %39, align 8 - %95 = load ptr, ptr %94, align 8 - %96 = getelementptr inbounds nuw i8, ptr %95, i64 216 - %97 = load ptr, ptr %95, align 8 - %98 = ptrtoint ptr %94 to i64 - %99 = ptrtoint ptr %97 to i64 - %100 = sub i64 %98, %99 - %101 = sdiv exact i64 %100, 48 - %sext.i17 = shl i64 %101, 32 - %102 = load ptr, ptr %96, align 8 - %103 = ashr exact i64 %sext.i17, 28 - %104 = getelementptr inbounds i8, ptr %102, i64 %103 - %105 = getelementptr inbounds nuw i8, ptr %104, i64 8 - %106 = trunc nuw nsw i64 %indvars.iv to i32 - store i32 %106, ptr %105, align 4 + %82 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %81, i64 %80, i32 1 + %83 = getelementptr inbounds nuw [3 x i8], ptr %82, i64 0, i64 %indvars.iv + store i8 %74, ptr %83, align 1 + %84 = load ptr, ptr %39, align 8 + %85 = load ptr, ptr %84, align 8 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 216 + %87 = load ptr, ptr %85, align 8 + %88 = ptrtoint ptr %84 to i64 + %89 = ptrtoint ptr %87 to i64 + %90 = sub i64 %88, %89 + %91 = sdiv exact i64 %90, 48 + %sext.i16 = shl i64 %91, 32 + %92 = load ptr, ptr %86, align 8 + %93 = ashr exact i64 %sext.i16, 28 + %94 = getelementptr inbounds i8, ptr %92, i64 %93 + store ptr %.sroa.018.040, ptr %94, align 8 + %95 = load ptr, ptr %39, align 8 + %96 = load ptr, ptr %95, align 8 + %97 = getelementptr inbounds nuw i8, ptr %96, i64 216 + %98 = load ptr, ptr %96, align 8 + %99 = ptrtoint ptr %95 to i64 + %100 = ptrtoint ptr %98 to i64 + %101 = sub i64 %99, %100 + %102 = sdiv exact i64 %101, 48 + %sext.i17 = shl i64 %102, 32 + %103 = load ptr, ptr %97, align 8 + %104 = ashr exact i64 %sext.i17, 28 + %105 = getelementptr inbounds i8, ptr %103, i64 %104 + %106 = getelementptr inbounds nuw i8, ptr %105, i64 8 + %107 = trunc nuw nsw i64 %indvars.iv to i32 + store i32 %107, ptr %106, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %.loopexit.loopexit, label %38, !llvm.loop !53 @@ -4926,9 +4929,9 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %.lr.ph42 - %107 = phi ptr [ %.pre, %.loopexit.loopexit ], [ %32, %.lr.ph42 ] - %108 = getelementptr inbounds nuw i8, ptr %.sroa.018.040, i64 48 - %.not34 = icmp eq ptr %108, %107 + %108 = phi ptr [ %.pre, %.loopexit.loopexit ], [ %32, %.lr.ph42 ] + %109 = getelementptr inbounds nuw i8, ptr %.sroa.018.040, i64 48 + %.not34 = icmp eq ptr %109, %108 br i1 %.not34, label %._crit_edge43, label %.lr.ph42, !llvm.loop !54 ._crit_edge43: ; preds = %.loopexit, %._crit_edge diff --git a/bench/meshoptimizer/optimized/spatialorder.ll b/bench/meshoptimizer/optimized/spatialorder.ll index 667095d0c73..252bacbfe54 100644 --- a/bench/meshoptimizer/optimized/spatialorder.ll +++ b/bench/meshoptimizer/optimized/spatialorder.ll @@ -31,7 +31,7 @@ define dso_local void @meshopt_spatialSortRemap(ptr noundef captures(none) %0, p %11 = shl nuw i64 %2, 2 %12 = select i1 %10, i64 -1, i64 %11 %13 = invoke noundef ptr %9(i64 noundef %12) - to label %14 unwind label %179 + to label %14 unwind label %178 14: ; preds = %4 %15 = getelementptr inbounds nuw i8, ptr %7, i64 192 @@ -239,15 +239,15 @@ define dso_local void @meshopt_spatialSortRemap(ptr noundef captures(none) %0, p _ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit: ; preds = %.preheader.i %135 = load ptr, ptr @_ZN17meshopt_Allocator8StorageTIvE8allocateE, align 8, !tbaa !4 %136 = invoke noundef ptr %135(i64 noundef %12) - to label %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 unwind label %181 + to label %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 unwind label %180 _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit %137 = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %136, ptr %137, align 8, !tbaa !4 - br i1 %.not.i, label %._crit_edge65, label %.lr.ph + br i1 %.not.i, label %._crit_edge68, label %.lr.ph .lr.ph.i46: ; preds = %.lr.ph, %.lr.ph.i46 - %.013.i = phi i64 [ %150, %.lr.ph.i46 ], [ 0, %.lr.ph ] + %.013.i = phi i64 [ %149, %.lr.ph.i46 ], [ 0, %.lr.ph ] %138 = getelementptr inbounds nuw i32, ptr %0, i64 %.013.i %139 = load i32, ptr %138, align 4, !tbaa !16 %140 = zext i32 %139 to i64 @@ -255,19 +255,23 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %142 = load i32, ptr %141, align 4, !tbaa !16 %143 = and i32 %142, 1023 %144 = zext nneg i32 %143 to i64 - %145 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %144, i64 0 - %146 = load i32, ptr %145, align 4, !tbaa !16 - %147 = add i32 %146, 1 - store i32 %147, ptr %145, align 4, !tbaa !16 - %148 = zext i32 %146 to i64 - %149 = getelementptr inbounds nuw i32, ptr %136, i64 %148 - store i32 %139, ptr %149, align 4, !tbaa !16 - %150 = add nuw i64 %.013.i, 1 - %exitcond.not.i47 = icmp eq i64 %150, %2 + %gep.i = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %144 + %145 = load i32, ptr %gep.i, align 4, !tbaa !16 + %146 = add i32 %145, 1 + store i32 %146, ptr %gep.i, align 4, !tbaa !16 + %147 = zext i32 %145 to i64 + %148 = getelementptr inbounds nuw i32, ptr %136, i64 %147 + store i32 %139, ptr %148, align 4, !tbaa !16 + %149 = add nuw i64 %.013.i, 1 + %exitcond.not.i47 = icmp eq i64 %149, %2 br i1 %exitcond.not.i47, label %.lr.ph.i50, label %.lr.ph.i46, !llvm.loop !21 -.lr.ph.i50: ; preds = %.lr.ph.i46, %.lr.ph.i50 - %.013.i51 = phi i64 [ %164, %.lr.ph.i50 ], [ 0, %.lr.ph.i46 ] +.lr.ph.i50: ; preds = %.lr.ph.i46 + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %8, i64 4 + br label %150 + +150: ; preds = %150, %.lr.ph.i50 + %.013.i51 = phi i64 [ 0, %.lr.ph.i50 ], [ %163, %150 ] %151 = getelementptr inbounds nuw i32, ptr %136, i64 %.013.i51 %152 = load i32, ptr %151, align 4, !tbaa !16 %153 = zext i32 %152 to i64 @@ -276,20 +280,24 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %156 = lshr i32 %155, 10 %157 = and i32 %156, 1023 %158 = zext nneg i32 %157 to i64 - %159 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %158, i64 1 - %160 = load i32, ptr %159, align 4, !tbaa !16 - %161 = add i32 %160, 1 - store i32 %161, ptr %159, align 4, !tbaa !16 - %162 = zext i32 %160 to i64 - %163 = getelementptr inbounds nuw i32, ptr %0, i64 %162 - store i32 %152, ptr %163, align 4, !tbaa !16 - %164 = add nuw i64 %.013.i51, 1 - %exitcond.not.i52 = icmp eq i64 %164, %2 - br i1 %exitcond.not.i52, label %.lr.ph.i56, label %.lr.ph.i50, !llvm.loop !21 - -.lr.ph.i56: ; preds = %.lr.ph.i50, %.lr.ph.i56 - %.013.i57 = phi i64 [ %178, %.lr.ph.i56 ], [ 0, %.lr.ph.i50 ] - %165 = getelementptr inbounds nuw i32, ptr %0, i64 %.013.i57 + %gep.i52 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i, i64 0, i64 %158 + %159 = load i32, ptr %gep.i52, align 4, !tbaa !16 + %160 = add i32 %159, 1 + store i32 %160, ptr %gep.i52, align 4, !tbaa !16 + %161 = zext i32 %159 to i64 + %162 = getelementptr inbounds nuw i32, ptr %0, i64 %161 + store i32 %152, ptr %162, align 4, !tbaa !16 + %163 = add nuw i64 %.013.i51, 1 + %exitcond.not.i53 = icmp eq i64 %163, %2 + br i1 %exitcond.not.i53, label %.lr.ph.i57, label %150, !llvm.loop !21 + +.lr.ph.i57: ; preds = %150 + %invariant.gep.i58 = getelementptr inbounds nuw i8, ptr %8, i64 8 + br label %164 + +164: ; preds = %164, %.lr.ph.i57 + %.013.i59 = phi i64 [ 0, %.lr.ph.i57 ], [ %177, %164 ] + %165 = getelementptr inbounds nuw i32, ptr %0, i64 %.013.i59 %166 = load i32, ptr %165, align 4, !tbaa !16 %167 = zext i32 %166 to i64 %168 = getelementptr inbounds nuw i32, ptr %13, i64 %167 @@ -297,79 +305,79 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %170 = lshr i32 %169, 20 %171 = and i32 %170, 1023 %172 = zext nneg i32 %171 to i64 - %173 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %172, i64 2 - %174 = load i32, ptr %173, align 4, !tbaa !16 - %175 = add i32 %174, 1 - store i32 %175, ptr %173, align 4, !tbaa !16 - %176 = zext i32 %174 to i64 - %177 = getelementptr inbounds nuw i32, ptr %136, i64 %176 - store i32 %166, ptr %177, align 4, !tbaa !16 - %178 = add nuw i64 %.013.i57, 1 - %exitcond.not.i58 = icmp eq i64 %178, %2 - br i1 %exitcond.not.i58, label %.lr.ph64, label %.lr.ph.i56, !llvm.loop !21 - -179: ; preds = %4 - %180 = landingpad { ptr, i32 } + %gep.i60 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i58, i64 0, i64 %172 + %173 = load i32, ptr %gep.i60, align 4, !tbaa !16 + %174 = add i32 %173, 1 + store i32 %174, ptr %gep.i60, align 4, !tbaa !16 + %175 = zext i32 %173 to i64 + %176 = getelementptr inbounds nuw i32, ptr %136, i64 %175 + store i32 %166, ptr %176, align 4, !tbaa !16 + %177 = add nuw i64 %.013.i59, 1 + %exitcond.not.i61 = icmp eq i64 %177, %2 + br i1 %exitcond.not.i61, label %.lr.ph67, label %164, !llvm.loop !21 + +178: ; preds = %4 + %179 = landingpad { ptr, i32 } cleanup - br label %201 + br label %200 -181: ; preds = %_ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit - %182 = landingpad { ptr, i32 } +180: ; preds = %_ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit + %181 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 12288, ptr nonnull %8) #10 - br label %201 + br label %200 .lr.ph: ; preds = %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44, %.lr.ph - %.03462 = phi i64 [ %185, %.lr.ph ], [ 0, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 ] - %183 = trunc i64 %.03462 to i32 - %184 = getelementptr inbounds nuw i32, ptr %0, i64 %.03462 - store i32 %183, ptr %184, align 4, !tbaa !16 - %185 = add nuw i64 %.03462, 1 - %exitcond.not = icmp eq i64 %185, %2 + %.03465 = phi i64 [ %184, %.lr.ph ], [ 0, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 ] + %182 = trunc i64 %.03465 to i32 + %183 = getelementptr inbounds nuw i32, ptr %0, i64 %.03465 + store i32 %182, ptr %183, align 4, !tbaa !16 + %184 = add nuw i64 %.03465, 1 + %exitcond.not = icmp eq i64 %184, %2 br i1 %exitcond.not, label %.lr.ph.i46, label %.lr.ph, !llvm.loop !22 -._crit_edge65: ; preds = %.lr.ph64, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 +._crit_edge68: ; preds = %.lr.ph67, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 call void @llvm.lifetime.end.p0(i64 12288, ptr nonnull %8) #10 - br label %186 - -186: ; preds = %187, %._crit_edge65 - %.0.i = phi i64 [ 2, %._crit_edge65 ], [ %189, %187 ] - %.not.i61 = icmp eq i64 %.0.i, 0 - br i1 %.not.i61, label %_ZN17meshopt_AllocatorD2Ev.exit, label %187 - -187: ; preds = %186 - %188 = load ptr, ptr @_ZN17meshopt_Allocator8StorageTIvE10deallocateE, align 8, !tbaa !4 - %189 = add i64 %.0.i, -1 - %190 = getelementptr inbounds nuw [24 x ptr], ptr %7, i64 0, i64 %189 - %191 = load ptr, ptr %190, align 8, !tbaa !4 - invoke void %188(ptr noundef %191) - to label %186 unwind label %192, !llvm.loop !23 - -192: ; preds = %187 - %193 = landingpad { ptr, i32 } + br label %185 + +185: ; preds = %186, %._crit_edge68 + %.0.i = phi i64 [ 2, %._crit_edge68 ], [ %188, %186 ] + %.not.i64 = icmp eq i64 %.0.i, 0 + br i1 %.not.i64, label %_ZN17meshopt_AllocatorD2Ev.exit, label %186 + +186: ; preds = %185 + %187 = load ptr, ptr @_ZN17meshopt_Allocator8StorageTIvE10deallocateE, align 8, !tbaa !4 + %188 = add i64 %.0.i, -1 + %189 = getelementptr inbounds nuw [24 x ptr], ptr %7, i64 0, i64 %188 + %190 = load ptr, ptr %189, align 8, !tbaa !4 + invoke void %187(ptr noundef %190) + to label %185 unwind label %191, !llvm.loop !23 + +191: ; preds = %186 + %192 = landingpad { ptr, i32 } catch ptr null - %194 = extractvalue { ptr, i32 } %193, 0 - tail call void @__clang_call_terminate(ptr %194) #11 + %193 = extractvalue { ptr, i32 } %192, 0 + tail call void @__clang_call_terminate(ptr %193) #11 unreachable -_ZN17meshopt_AllocatorD2Ev.exit: ; preds = %186 +_ZN17meshopt_AllocatorD2Ev.exit: ; preds = %185 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %7) #10 ret void -.lr.ph64: ; preds = %.lr.ph.i56, %.lr.ph64 - %.063 = phi i64 [ %200, %.lr.ph64 ], [ 0, %.lr.ph.i56 ] - %195 = trunc i64 %.063 to i32 - %196 = getelementptr inbounds nuw i32, ptr %136, i64 %.063 - %197 = load i32, ptr %196, align 4, !tbaa !16 - %198 = zext i32 %197 to i64 - %199 = getelementptr inbounds nuw i32, ptr %0, i64 %198 - store i32 %195, ptr %199, align 4, !tbaa !16 - %200 = add nuw i64 %.063, 1 - %exitcond67.not = icmp eq i64 %200, %2 - br i1 %exitcond67.not, label %._crit_edge65, label %.lr.ph64, !llvm.loop !24 - -201: ; preds = %181, %179 - %.pn = phi { ptr, i32 } [ %182, %181 ], [ %180, %179 ] +.lr.ph67: ; preds = %164, %.lr.ph67 + %.066 = phi i64 [ %199, %.lr.ph67 ], [ 0, %164 ] + %194 = trunc i64 %.066 to i32 + %195 = getelementptr inbounds nuw i32, ptr %136, i64 %.066 + %196 = load i32, ptr %195, align 4, !tbaa !16 + %197 = zext i32 %196 to i64 + %198 = getelementptr inbounds nuw i32, ptr %0, i64 %197 + store i32 %194, ptr %198, align 4, !tbaa !16 + %199 = add nuw i64 %.066, 1 + %exitcond70.not = icmp eq i64 %199, %2 + br i1 %exitcond70.not, label %._crit_edge68, label %.lr.ph67, !llvm.loop !24 + +200: ; preds = %180, %178 + %.pn = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ] call void @_ZN17meshopt_AllocatorD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %7) #10 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %7) #10 resume { ptr, i32 } %.pn diff --git a/bench/minetest/optimized/CGUIListBox.ll b/bench/minetest/optimized/CGUIListBox.ll index 4947234b6d3..abb8ad8b9dd 100644 --- a/bench/minetest/optimized/CGUIListBox.ll +++ b/bench/minetest/optimized/CGUIListBox.ll @@ -5008,9 +5008,10 @@ entry: if.end: ; preds = %entry %conv.i18 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2, i64 %idxprom + %arrayidx.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2 + %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom store i8 1, ptr %arrayidx, align 4, !tbaa !131 - %Color = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2, i64 %idxprom, i32 1 + %Color = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom, i32 1 store i32 %color.coerce, ptr %Color, align 4, !tbaa !52 br label %return @@ -5055,7 +5056,8 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2, i64 %idxprom + %arrayidx.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom store i8 0, ptr %arrayidx, align 4, !tbaa !131 br label %return @@ -5083,7 +5085,8 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2, i64 %idxprom + %arrayidx.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom %3 = load i8, ptr %arrayidx, align 4, !tbaa !131, !range !70, !noundef !71 %tobool = icmp ne i8 %3, 0 br label %return @@ -5113,7 +5116,8 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %Color = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2, i64 %idxprom, i32 1 + %Color.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %Color = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %Color.split, i64 0, i64 %idxprom, i32 1 %3 = load i32, ptr %Color, align 8, !tbaa !52 br label %return diff --git a/bench/minetest/optimized/voxelalgorithms.ll b/bench/minetest/optimized/voxelalgorithms.ll index a985576de0f..7cfc4817b4c 100644 --- a/bench/minetest/optimized/voxelalgorithms.ll +++ b/bench/minetest/optimized/voxelalgorithms.ll @@ -4401,6 +4401,7 @@ for.cond1.preheader: ; preds = %for.cond.cleanup4, %add.i89 = mul i32 %mul622.i, %conv5.i %add.i104.reass = mul i32 %sub.i, %invariant.op %cmp21.not114 = icmp slt i32 %add.i89, %add.i104.reass + %arrayidx19.split = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv120 br i1 %cmp21.not114, label %for.cond.cleanup4, label %for.cond1.preheader.split for.cond1.preheader.split: ; preds = %for.cond1.preheader @@ -4424,7 +4425,7 @@ for.body5: ; preds = %for.cond.cleanup22. %conv16.i = ashr exact i32 %sext, 16 %sub20.i = sub nsw i32 %conv16.i, %conv19.i %add21.i108 = add nsw i32 %sub20.i, %add.i104.reass - %arrayidx19 = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv120, i64 %indvars.iv + %arrayidx19 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx19.split, i64 0, i64 %indvars.iv %9 = load i8, ptr %arrayidx19, align 1, !tbaa !118, !range !99, !noundef !100 %add21.i = add nsw i32 %sub20.i, %add.i89 br label %for.body23 @@ -5989,6 +5990,7 @@ for.cond1.preheader.i: ; preds = %for.cond.cleanup4.i for.cond1.preheader.i.split: ; preds = %for.cond1.preheader.i %23 = load ptr, ptr %m_flags.i, align 8, !tbaa !164 + %arrayidx19.i.split = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv120.i br label %for.body5.i for.cond.cleanup4.i: ; preds = %for.cond.cleanup22.i.loopexit, %for.cond1.preheader.i @@ -6004,7 +6006,7 @@ for.body5.i: ; preds = %for.cond.cleanup22. %conv16.i.i = ashr exact i32 %sext.i, 16 %sub20.i.i = sub nsw i32 %conv16.i.i, %conv19.i.i %add21.i108.i = add nsw i32 %sub20.i.i, %add.i104.i.reass - %arrayidx19.i = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv120.i, i64 %indvars.iv.i + %arrayidx19.i = getelementptr inbounds nuw [16 x i8], ptr %arrayidx19.i.split, i64 0, i64 %indvars.iv.i %25 = load i8, ptr %arrayidx19.i, align 1, !tbaa !118, !range !99, !noundef !100 %add21.i.i = add nsw i32 %sub20.i.i, %add.i89.i br label %for.body23.i @@ -6079,6 +6081,7 @@ for.cond56.preheader: ; preds = %for.cond.cleanup59, %indvars.iv616 = phi i64 [ 0, %invoke.cont43 ], [ %indvars.iv.next617, %for.cond.cleanup59 ] %32 = trunc i64 %indvars.iv616 to i32 %ref.tmp62.sroa.6.0.insert.shift = shl nuw i32 %32, 16 + %arrayidx66.split = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv616 br label %for.body60 lpad34: ; preds = %for.body32 @@ -6104,7 +6107,7 @@ for.body60: ; preds = %invoke.cont67, %for %incdec.ptr.i.i557573 = phi ptr [ %_M_finish.i.promoted, %for.cond56.preheader ], [ %incdec.ptr.i.i558, %invoke.cont67 ] %add.ptr28.i.i563572 = phi ptr [ %_M_end_of_storage.i.promoted, %for.cond56.preheader ], [ %add.ptr28.i.i562, %invoke.cont67 ] %cond.i49.i.i568571 = phi ptr [ %data.promoted, %for.cond56.preheader ], [ %40, %invoke.cont67 ] - %arrayidx66 = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv616, i64 %indvars.iv + %arrayidx66 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx66.split, i64 0, i64 %indvars.iv %cmp.not.i = icmp eq ptr %incdec.ptr.i.i557573, %add.ptr28.i.i563572 br i1 %cmp.not.i, label %if.else.i429, label %if.then.i @@ -6921,6 +6924,7 @@ entry: for.cond1.preheader: ; preds = %for.cond.cleanup4, %entry %indvars.iv83 = phi i64 [ 0, %entry ], [ %indvars.iv.next84, %for.cond.cleanup4 ] + %arrayidx7.split = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv83 %.idx = shl i64 %indvars.iv83, 10 br label %for.body5 @@ -6934,7 +6938,7 @@ for.cond.cleanup4: ; preds = %for.cond.cleanup11 for.body5: ; preds = %for.cond.cleanup11, %for.cond1.preheader %indvars.iv80 = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next81, %for.cond.cleanup11 ] - %arrayidx7 = getelementptr inbounds nuw [16 x i8], ptr %light, i64 %indvars.iv83, i64 %indvars.iv80 + %arrayidx7 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx7.split, i64 0, i64 %indvars.iv80 %0 = load i8, ptr %arrayidx7, align 1, !tbaa !118, !range !99, !noundef !100 br label %for.body12 @@ -7175,6 +7179,7 @@ invoke.cont22: ; preds = %invoke.cont20 for.cond1.preheader.i: ; preds = %for.cond.cleanup4.i, %invoke.cont22 %indvars.iv83.i = phi i64 [ 0, %invoke.cont22 ], [ %indvars.iv.next84.i, %for.cond.cleanup4.i ] + %arrayidx7.i.split = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv83.i %.idx = shl i64 %indvars.iv83.i, 10 br label %for.body5.i @@ -7185,7 +7190,7 @@ for.cond.cleanup4.i: ; preds = %for.cond.cleanup11. for.body5.i: ; preds = %for.cond.cleanup11.i, %for.cond1.preheader.i %indvars.iv80.i = phi i64 [ 0, %for.cond1.preheader.i ], [ %indvars.iv.next81.i, %for.cond.cleanup11.i ] - %arrayidx7.i = getelementptr inbounds nuw [16 x i8], ptr %lights, i64 %indvars.iv83.i, i64 %indvars.iv80.i + %arrayidx7.i = getelementptr inbounds nuw [16 x i8], ptr %arrayidx7.i.split, i64 0, i64 %indvars.iv80.i %14 = load i8, ptr %arrayidx7.i, align 1, !tbaa !118, !range !99, !noundef !100 br label %for.body12.i @@ -7286,6 +7291,7 @@ for.cond29.preheader: ; preds = %for.cond.cleanup32, %indvars.iv381 = phi i64 [ 0, %invoke.cont24 ], [ %indvars.iv.next382, %for.cond.cleanup32 ] %31 = trunc i64 %indvars.iv381 to i32 %ref.tmp35.sroa.6.0.insert.shift = shl nuw i32 %31, 16 + %arrayidx39.split = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv381 br label %for.body33 while.cond.preheader: ; preds = %for.cond.cleanup32 @@ -7322,7 +7328,7 @@ for.cond.cleanup32: ; preds = %invoke.cont40 for.body33: ; preds = %invoke.cont40, %for.cond29.preheader %35 = phi ptr [ %.pre, %for.cond29.preheader ], [ %44, %invoke.cont40 ] %indvars.iv = phi i64 [ 0, %for.cond29.preheader ], [ %indvars.iv.next, %invoke.cont40 ] - %arrayidx39 = getelementptr inbounds nuw [16 x [16 x i8]], ptr %lights, i64 0, i64 %indvars.iv381, i64 %indvars.iv + %arrayidx39 = getelementptr inbounds nuw [16 x i8], ptr %arrayidx39.split, i64 0, i64 %indvars.iv %36 = load ptr, ptr %_M_end_of_storage.i, align 8, !tbaa !202 %cmp.not.i = icmp eq ptr %35, %36 br i1 %cmp.not.i, label %if.else.i, label %if.then.i230 diff --git a/bench/mitsuba3/optimized/struct.ll b/bench/mitsuba3/optimized/struct.ll index 2d2b1ecdf19..00e374ffd14 100644 --- a/bench/mitsuba3/optimized/struct.ll +++ b/bench/mitsuba3/optimized/struct.ll @@ -8131,134 +8131,136 @@ _ZN7mitsuba6detail14StructCompiler6const_IdEEN6asmjit9_abi_1_103x863MemET_.exit1 %47 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %46, i32 noundef 1607, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %2) br label %.preheader.us -.preheader.us: ; preds = %.preheader.us.preheader, %.split22.us.us - %.027.us = phi i64 [ %49, %.split22.us.us ], [ 0, %.preheader.us.preheader ] - %48 = icmp eq i64 %.027.us, 0 - br i1 %48, label %.preheader.split.us.us, label %.preheader.split.us30 +.preheader.us: ; preds = %.preheader.us.preheader, %.split24.us.us + %.031.us = phi i64 [ %49, %.split24.us.us ], [ 0, %.preheader.us.preheader ] + %invariant.gep.us = getelementptr inbounds nuw [6 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %.031.us + %48 = icmp eq i64 %.031.us, 0 + br i1 %48, label %.preheader.split.us.us, label %.preheader.split.us33 -.split22.us.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us - %49 = add nuw nsw i64 %.027.us, 1 - %exitcond49.not = icmp eq i64 %49, 6 - br i1 %exitcond49.not, label %.split33.us, label %.preheader.us, !llvm.loop !372 +.split24.us.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us + %49 = add nuw nsw i64 %.031.us, 1 + %exitcond52.not = icmp eq i64 %49, 6 + br i1 %exitcond52.not, label %.split36.us, label %.preheader.us, !llvm.loop !372 .preheader.split.us.us: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us %50 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ true, %.preheader.us ] - %indvars.iv46 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ 0, %.preheader.us ] - %51 = getelementptr inbounds nuw [2 x [6 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %indvars.iv46, i64 0 - %52 = load float, ptr %51, align 8 - %53 = load ptr, ptr %1, align 8, !noalias !373 + %indvars.iv49 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ 0, %.preheader.us ] + %gep.us.us = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv49 + %51 = load float, ptr %gep.us.us, align 4 + %52 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %52, ptr %5, align 4, !noalias !376 - %54 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %53, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + store float %51, ptr %5, align 4, !noalias !376 + %53 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %52, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us unwind label %.split.us.split.us _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us: ; preds = %.preheader.split.us.us %..us.us = select i1 %50, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %55 = load ptr, ptr %1, align 8 - %56 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %55, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us.us, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %50, label %.preheader.split.us.us, label %.split22.us.us, !llvm.loop !379 - -.preheader.split.us30: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us - %57 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us ], [ true, %.preheader.us ] - %indvars.iv43 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us ], [ 0, %.preheader.us ] - %58 = getelementptr inbounds nuw [2 x [6 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %indvars.iv43, i64 %.027.us - %59 = load float, ptr %58, align 4 - %60 = load ptr, ptr %1, align 8, !noalias !373 + %54 = load ptr, ptr %1, align 8 + %55 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %54, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us.us, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %50, label %.preheader.split.us.us, label %.split24.us.us, !llvm.loop !379 + +.preheader.split.us33: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us + %56 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ true, %.preheader.us ] + %indvars.iv46 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ 0, %.preheader.us ] + %gep.us27.us = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv46 + %57 = load float, ptr %gep.us27.us, align 4 + %58 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %59, ptr %5, align 4, !noalias !376 - %61 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %60, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) - to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us unwind label %.split.split.us.split.us + store float %57, ptr %5, align 4, !noalias !376 + %59 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %58, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us unwind label %.split.split.us.split.us -_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us: ; preds = %.preheader.split.us30 - %..us24.us = select i1 %57, ptr %0, ptr %8 +_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us: ; preds = %.preheader.split.us33 + %..us26.us = select i1 %56, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %62 = load ptr, ptr %1, align 8 - %63 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %62, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %..us24.us, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %57, label %.preheader.split.us30, label %.split22.us.us, !llvm.loop !379 + %60 = load ptr, ptr %1, align 8 + %61 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %60, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %..us26.us, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %56, label %.preheader.split.us33, label %.split24.us.us, !llvm.loop !379 .split.us.split.us: ; preds = %.preheader.split.us.us - %64 = landingpad { ptr, i32 } + %62 = landingpad { ptr, i32 } catch ptr null br label %.split.us -.split.split.us.split.us: ; preds = %.preheader.split.us30 - %65 = landingpad { ptr, i32 } +.split.split.us.split.us: ; preds = %.preheader.split.us33 + %63 = landingpad { ptr, i32 } catch ptr null br label %.split.us -.preheader: ; preds = %.preheader.preheader, %.split22.us - %.027 = phi i64 [ %84, %.split22.us ], [ 0, %.preheader.preheader ] - %66 = icmp eq i64 %.027, 0 - br i1 %66, label %.preheader.split.us, label %.preheader.split +.preheader: ; preds = %.preheader.preheader, %.split24.us + %.031 = phi i64 [ %80, %.split24.us ], [ 0, %.preheader.preheader ] + %invariant.gep20 = getelementptr inbounds nuw [5 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %.031 + %64 = icmp eq i64 %.031, 0 + br i1 %64, label %.preheader.split.us, label %.preheader.split .preheader.split.us: ; preds = %.preheader, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us - %67 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ true, %.preheader ] - %indvars.iv40 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ 0, %.preheader ] - %68 = getelementptr inbounds nuw [2 x [5 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %indvars.iv40, i64 0 - %69 = load float, ptr %68, align 4 - %70 = load ptr, ptr %1, align 8, !noalias !373 + %65 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ true, %.preheader ] + %indvars.iv43 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ 0, %.preheader ] + %gep21.us = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv43 + %66 = load float, ptr %gep21.us, align 4 + %67 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %69, ptr %5, align 4, !noalias !376 - %71 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %70, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + store float %66, ptr %5, align 4, !noalias !376 + %68 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %67, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us unwind label %.split.us.split _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us: ; preds = %.preheader.split.us - %..us = select i1 %67, ptr %0, ptr %8 + %..us = select i1 %65, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %72 = load ptr, ptr %1, align 8 - %73 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %72, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %67, label %.preheader.split.us, label %.split22.us, !llvm.loop !379 + %69 = load ptr, ptr %1, align 8 + %70 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %69, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %65, label %.preheader.split.us, label %.split24.us, !llvm.loop !379 .split.us.split: ; preds = %.preheader.split.us - %74 = landingpad { ptr, i32 } + %71 = landingpad { ptr, i32 } catch ptr null br label %.split.us .preheader.split: ; preds = %.preheader, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit - %75 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ true, %.preheader ] + %72 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ true, %.preheader ] %indvars.iv = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ 0, %.preheader ] - %76 = getelementptr inbounds nuw [2 x [5 x float]], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %indvars.iv, i64 %.027 - %77 = load float, ptr %76, align 4 - %78 = load ptr, ptr %1, align 8, !noalias !373 + %gep21 = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv + %73 = load float, ptr %gep21, align 4 + %74 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %77, ptr %5, align 4, !noalias !376 - %79 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %78, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + store float %73, ptr %5, align 4, !noalias !376 + %75 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %74, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit unwind label %.split.split .split.split: ; preds = %.preheader.split - %80 = landingpad { ptr, i32 } + %76 = landingpad { ptr, i32 } catch ptr null br label %.split.us .split.us: ; preds = %.split.split, %.split.split.us.split.us, %.split.us.split, %.split.us.split.us - %.us-phi = phi { ptr, i32 } [ %74, %.split.us.split ], [ %64, %.split.us.split.us ], [ %80, %.split.split ], [ %65, %.split.split.us.split.us ] - %81 = extractvalue { ptr, i32 } %.us-phi, 0 - call void @__clang_call_terminate(ptr %81) #31 + %.us-phi = phi { ptr, i32 } [ %71, %.split.us.split ], [ %62, %.split.us.split.us ], [ %76, %.split.split ], [ %63, %.split.split.us.split.us ] + %77 = extractvalue { ptr, i32 } %.us-phi, 0 + call void @__clang_call_terminate(ptr %77) #31 unreachable _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit: ; preds = %.preheader.split - %. = select i1 %75, ptr %0, ptr %8 + %. = select i1 %72, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %82 = load ptr, ptr %1, align 8 - %83 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %82, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %., ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %75, label %.preheader.split, label %.split22.us, !llvm.loop !379 - -.split22.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us - %84 = add nuw nsw i64 %.027, 1 - %exitcond.not = icmp eq i64 %84, 5 - br i1 %exitcond.not, label %.split33.us, label %.preheader, !llvm.loop !372 - -.split33.us: ; preds = %.split22.us, %.split22.us.us - %85 = load ptr, ptr %1, align 8 - %86 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %85, i32 noundef 935, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %8) - %87 = load ptr, ptr %1, align 8 - %88 = load ptr, ptr %87, align 8 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 48 - %90 = load ptr, ptr %89, align 8 - %91 = call noundef i32 %90(ptr noundef nonnull align 8 dereferenceable(410) %87, ptr noundef nonnull align 4 dereferenceable(16) %11) - %92 = load ptr, ptr %1, align 8 - %93 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %92, i32 noundef 1198, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %2) + %78 = load ptr, ptr %1, align 8 + %79 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %78, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %., ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %72, label %.preheader.split, label %.split24.us, !llvm.loop !379 + +.split24.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us + %80 = add nuw nsw i64 %.031, 1 + %exitcond.not = icmp eq i64 %80, 5 + br i1 %exitcond.not, label %.split36.us, label %.preheader, !llvm.loop !372 + +.split36.us: ; preds = %.split24.us, %.split24.us.us + %81 = load ptr, ptr %1, align 8 + %82 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %81, i32 noundef 935, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %8) + %83 = load ptr, ptr %1, align 8 + %84 = load ptr, ptr %83, align 8 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 48 + %86 = load ptr, ptr %85, align 8 + %87 = call noundef i32 %86(ptr noundef nonnull align 8 dereferenceable(410) %83, ptr noundef nonnull align 4 dereferenceable(16) %11) + %88 = load ptr, ptr %1, align 8 + %89 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %88, i32 noundef 1198, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %2) ret void } diff --git a/bench/oiio/optimized/imageio.ll b/bench/oiio/optimized/imageio.ll index 35e09cac4eb..9f614d8d94e 100644 --- a/bench/oiio/optimized/imageio.ll +++ b/bench/oiio/optimized/imageio.ll @@ -9789,32 +9789,32 @@ _ZN11OpenImageIO6v3_1_09ImageSpec11auto_strideERlS2_S2_liii.exit: br i1 %brmerge, label %._crit_edge76, label %.preheader58.us.us.us .preheader58.us.us.us: ; preds = %.preheader58.lr.ph, %._crit_edge.split.us.split.us.us.us.us - %.073.us.us.us = phi ptr [ %105, %._crit_edge.split.us.split.us.us.us.us ], [ %4, %.preheader58.lr.ph ] - %.04072.us.us.us = phi i32 [ %104, %._crit_edge.split.us.split.us.us.us.us ], [ 0, %.preheader58.lr.ph ] + %.073.us.us.us = phi ptr [ %106, %._crit_edge.split.us.split.us.us.us.us ], [ %4, %.preheader58.lr.ph ] + %.04072.us.us.us = phi i32 [ %105, %._crit_edge.split.us.split.us.us.us.us ], [ 0, %.preheader58.lr.ph ] %30 = add nsw i32 %.04072.us.us.us, %15 %31 = or i32 %30, %11 br label %.preheader57.us.us.us.us.us .preheader57.us.us.us.us.us: ; preds = %._crit_edge63.split.us.us.us.us.us.us, %.preheader58.us.us.us - %.04566.us.us.us.us.us = phi i32 [ 0, %.preheader58.us.us.us ], [ %102, %._crit_edge63.split.us.us.us.us.us.us ] - %.04664.us.us.us.us.us = phi ptr [ %.073.us.us.us, %.preheader58.us.us.us ], [ %103, %._crit_edge63.split.us.us.us.us.us.us ] + %.04566.us.us.us.us.us = phi i32 [ 0, %.preheader58.us.us.us ], [ %103, %._crit_edge63.split.us.us.us.us.us.us ] + %.04664.us.us.us.us.us = phi ptr [ %.073.us.us.us, %.preheader58.us.us.us ], [ %104, %._crit_edge63.split.us.us.us.us.us.us ] %32 = add nsw i32 %.04566.us.us.us.us.us, %14 br label %.preheader.us.us.us.us.us.us .preheader.us.us.us.us.us.us: ; preds = %._crit_edge.us.us.us.us.us.us, %.preheader57.us.us.us.us.us - %.04362.us.us.us.us.us.us = phi i32 [ 0, %.preheader57.us.us.us.us.us ], [ %100, %._crit_edge.us.us.us.us.us.us ] - %.04461.us.us.us.us.us.us = phi ptr [ %.04664.us.us.us.us.us, %.preheader57.us.us.us.us.us ], [ %101, %._crit_edge.us.us.us.us.us.us ] + %.04362.us.us.us.us.us.us = phi i32 [ 0, %.preheader57.us.us.us.us.us ], [ %101, %._crit_edge.us.us.us.us.us.us ] + %.04461.us.us.us.us.us.us = phi ptr [ %.04664.us.us.us.us.us, %.preheader57.us.us.us.us.us ], [ %102, %._crit_edge.us.us.us.us.us.us ] %33 = add nsw i32 %.04362.us.us.us.us.us.us, %13 br label %34 -34: ; preds = %97, %.preheader.us.us.us.us.us.us - %.04160.us.us.us.us.us.us = phi i32 [ 0, %.preheader.us.us.us.us.us.us ], [ %98, %97 ] - %.04259.us.us.us.us.us.us = phi ptr [ %.04461.us.us.us.us.us.us, %.preheader.us.us.us.us.us.us ], [ %99, %97 ] +34: ; preds = %98, %.preheader.us.us.us.us.us.us + %.04160.us.us.us.us.us.us = phi i32 [ 0, %.preheader.us.us.us.us.us.us ], [ %99, %98 ] + %.04259.us.us.us.us.us.us = phi ptr [ %.04461.us.us.us.us.us.us, %.preheader.us.us.us.us.us.us ], [ %100, %98 ] %35 = add nsw i32 %.04160.us.us.us.us.us.us, %12 %36 = icmp eq i32 %35, %9 %37 = icmp eq i32 %35, %10 %or.cond.us.us.us.us.us.us = or i1 %36, %37 - br i1 %or.cond.us.us.us.us.us.us, label %97, label %38 + br i1 %or.cond.us.us.us.us.us.us, label %98, label %38 38: ; preds = %34 %39 = and i32 %35, -4 @@ -9874,40 +9874,41 @@ _ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us: ; %85 = and i32 %.0.i.us.us.us.us.us.us, 255 %86 = and i32 %.015.i.us.us.us.us.us.us, 255 %87 = zext nneg i32 %86 to i64 - %88 = zext nneg i32 %85 to i64 - %89 = getelementptr inbounds nuw [256 x [256 x [4 x float]]], ptr @_ZN11OpenImageIO6v3_1_03pvt15bluenoise_tableE, i64 0, i64 %87, i64 %88 - %90 = and i32 %35, 3 - %91 = zext nneg i32 %90 to i64 - %92 = getelementptr inbounds nuw float, ptr %89, i64 %91 - %93 = load float, ptr %92, align 4, !tbaa !63 - %94 = fadd float %93, -5.000000e-01 - %95 = load float, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 - %96 = tail call float @llvm.fmuladd.f32(float %8, float %94, float %95) - store float %96, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 - br label %97 - -97: ; preds = %_ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us, %34 - %98 = add nuw nsw i32 %.04160.us.us.us.us.us.us, 1 - %99 = getelementptr inbounds nuw i8, ptr %.04259.us.us.us.us.us.us, i64 4 - %exitcond.not = icmp eq i32 %98, %0 + %88 = getelementptr inbounds nuw [256 x [256 x [4 x float]]], ptr @_ZN11OpenImageIO6v3_1_03pvt15bluenoise_tableE, i64 0, i64 %87 + %89 = zext nneg i32 %85 to i64 + %90 = getelementptr inbounds nuw [256 x [4 x float]], ptr %88, i64 0, i64 %89 + %91 = and i32 %35, 3 + %92 = zext nneg i32 %91 to i64 + %93 = getelementptr inbounds nuw float, ptr %90, i64 %92 + %94 = load float, ptr %93, align 4, !tbaa !63 + %95 = fadd float %94, -5.000000e-01 + %96 = load float, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 + %97 = tail call float @llvm.fmuladd.f32(float %8, float %95, float %96) + store float %97, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 + br label %98 + +98: ; preds = %_ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us, %34 + %99 = add nuw nsw i32 %.04160.us.us.us.us.us.us, 1 + %100 = getelementptr inbounds nuw i8, ptr %.04259.us.us.us.us.us.us, i64 4 + %exitcond.not = icmp eq i32 %99, %0 br i1 %exitcond.not, label %._crit_edge.us.us.us.us.us.us, label %34, !llvm.loop !223 -._crit_edge.us.us.us.us.us.us: ; preds = %97 - %100 = add nuw nsw i32 %.04362.us.us.us.us.us.us, 1 - %101 = getelementptr inbounds i8, ptr %.04461.us.us.us.us.us.us, i64 %.055 - %exitcond90.not = icmp eq i32 %100, %1 +._crit_edge.us.us.us.us.us.us: ; preds = %98 + %101 = add nuw nsw i32 %.04362.us.us.us.us.us.us, 1 + %102 = getelementptr inbounds i8, ptr %.04461.us.us.us.us.us.us, i64 %.055 + %exitcond90.not = icmp eq i32 %101, %1 br i1 %exitcond90.not, label %._crit_edge63.split.us.us.us.us.us.us, label %.preheader.us.us.us.us.us.us, !llvm.loop !224 ._crit_edge63.split.us.us.us.us.us.us: ; preds = %._crit_edge.us.us.us.us.us.us - %102 = add nuw nsw i32 %.04566.us.us.us.us.us, 1 - %103 = getelementptr inbounds i8, ptr %.04664.us.us.us.us.us, i64 %.054 - %exitcond91.not = icmp eq i32 %102, %2 + %103 = add nuw nsw i32 %.04566.us.us.us.us.us, 1 + %104 = getelementptr inbounds i8, ptr %.04664.us.us.us.us.us, i64 %.054 + %exitcond91.not = icmp eq i32 %103, %2 br i1 %exitcond91.not, label %._crit_edge.split.us.split.us.us.us.us, label %.preheader57.us.us.us.us.us, !llvm.loop !225 ._crit_edge.split.us.split.us.us.us.us: ; preds = %._crit_edge63.split.us.us.us.us.us.us - %104 = add nuw nsw i32 %.04072.us.us.us, 1 - %105 = getelementptr inbounds i8, ptr %.073.us.us.us, i64 %.053 - %exitcond92.not = icmp eq i32 %104, %3 + %105 = add nuw nsw i32 %.04072.us.us.us, 1 + %106 = getelementptr inbounds i8, ptr %.073.us.us.us, i64 %.053 + %exitcond92.not = icmp eq i32 %105, %3 br i1 %exitcond92.not, label %._crit_edge76, label %.preheader58.us.us.us, !llvm.loop !226 ._crit_edge76: ; preds = %._crit_edge.split.us.split.us.us.us.us, %.preheader58.lr.ph, %_ZN11OpenImageIO6v3_1_09ImageSpec11auto_strideERlS2_S2_liii.exit diff --git a/bench/oiio/optimized/psdinput.ll b/bench/oiio/optimized/psdinput.ll index a556632a757..b9bfc3b2e38 100644 --- a/bench/oiio/optimized/psdinput.ll +++ b/bench/oiio/optimized/psdinput.ll @@ -11407,47 +11407,48 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearE br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit ._crit_edge: ; preds = %.lr.ph, %.preheader - br i1 %2, label %32, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit + br i1 %2, label %33, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %23 = phi i64 [ %21, %.lr.ph.preheader ], [ %27, %.lr.ph ] - %24 = getelementptr inbounds nuw [10 x [4 x ptr]], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_namesE, i64 0, i64 %23, i64 %indvars.iv - %25 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRPKcEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %24) + %23 = phi i64 [ %21, %.lr.ph.preheader ], [ %28, %.lr.ph ] + %24 = getelementptr inbounds nuw [10 x [4 x ptr]], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_namesE, i64 0, i64 %23 + %25 = getelementptr inbounds nuw [4 x ptr], ptr %24, i64 0, i64 %indvars.iv + %26 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRPKcEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %25) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %26 = load i16, ptr %17, align 2, !tbaa !171 - %27 = zext i16 %26 to i64 - %28 = getelementptr inbounds nuw [10 x i32], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_countE, i64 0, i64 %27 - %29 = load i32, ptr %28, align 4, !tbaa !26 - %30 = zext i32 %29 to i64 - %31 = icmp samesign ult i64 %indvars.iv.next, %30 - br i1 %31, label %.lr.ph, label %._crit_edge, !llvm.loop !407 - -32: ; preds = %._crit_edge - %33 = load ptr, ptr %6, align 8, !tbaa !19 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 112 - %35 = load ptr, ptr %34, align 8, !tbaa !22 - %.not.i = icmp eq ptr %33, %35 - br i1 %.not.i, label %41, label %._crit_edge.i.i.i.i.i - -._crit_edge.i.i.i.i.i: ; preds = %32 - %36 = getelementptr inbounds nuw i8, ptr %33, i64 16 - store ptr %36, ptr %33, align 8, !tbaa !3 - store i8 65, ptr %36, align 1, !tbaa !12 - %37 = getelementptr inbounds nuw i8, ptr %33, i64 8 - store i64 1, ptr %37, align 8, !tbaa !9 - %38 = getelementptr inbounds nuw i8, ptr %33, i64 17 - store i8 0, ptr %38, align 1, !tbaa !12 - %39 = load ptr, ptr %6, align 8, !tbaa !19 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 32 - store ptr %40, ptr %6, align 8, !tbaa !19 + %27 = load i16, ptr %17, align 2, !tbaa !171 + %28 = zext i16 %27 to i64 + %29 = getelementptr inbounds nuw [10 x i32], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_countE, i64 0, i64 %28 + %30 = load i32, ptr %29, align 4, !tbaa !26 + %31 = zext i32 %30 to i64 + %32 = icmp samesign ult i64 %indvars.iv.next, %31 + br i1 %32, label %.lr.ph, label %._crit_edge, !llvm.loop !407 + +33: ; preds = %._crit_edge + %34 = load ptr, ptr %6, align 8, !tbaa !19 + %35 = getelementptr inbounds nuw i8, ptr %1, i64 112 + %36 = load ptr, ptr %35, align 8, !tbaa !22 + %.not.i = icmp eq ptr %34, %36 + br i1 %.not.i, label %42, label %._crit_edge.i.i.i.i.i + +._crit_edge.i.i.i.i.i: ; preds = %33 + %37 = getelementptr inbounds nuw i8, ptr %34, i64 16 + store ptr %37, ptr %34, align 8, !tbaa !3 + store i8 65, ptr %37, align 1, !tbaa !12 + %38 = getelementptr inbounds nuw i8, ptr %34, i64 8 + store i64 1, ptr %38, align 8, !tbaa !9 + %39 = getelementptr inbounds nuw i8, ptr %34, i64 17 + store i8 0, ptr %39, align 1, !tbaa !12 + %40 = load ptr, ptr %6, align 8, !tbaa !19 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 32 + store ptr %41, ptr %6, align 8, !tbaa !19 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit -41: ; preds = %32 - tail call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRA2_KcEEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %33, ptr noundef nonnull align 1 dereferenceable(2) @.str.15) +42: ; preds = %33 + tail call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRA2_KcEEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.15) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit: ; preds = %41, %._crit_edge.i.i.i.i.i, %._crit_edge, %22 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit: ; preds = %42, %._crit_edge.i.i.i.i.i, %._crit_edge, %22 ret void } diff --git a/bench/oniguruma/optimized/unicode.ll b/bench/oniguruma/optimized/unicode.ll index 4691b3dc65d..744e2ed05f7 100644 --- a/bench/oniguruma/optimized/unicode.ll +++ b/bench/oniguruma/optimized/unicode.ll @@ -1558,7 +1558,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep473 = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %158 %159 = zext nneg i32 %156 to i64 %160 = shl nuw nsw i64 %159, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep706, ptr nonnull align 4 %gep473, i64 %160, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep706, ptr nonnull align 4 %gep473, i64 %160, i1 false), !tbaa !17 br label %._crit_edge477 ._crit_edge477: ; preds = %.lr.ph476, %152 @@ -1723,7 +1723,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep446 = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %221 %222 = zext nneg i32 %219 to i64 %223 = shl nuw nsw i64 %222, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep704, ptr nonnull align 4 %gep446, i64 %223, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep704, ptr nonnull align 4 %gep446, i64 %223, i1 false), !tbaa !17 br label %._crit_edge450 ._crit_edge450: ; preds = %.lr.ph449, %215 @@ -1941,7 +1941,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep414 = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %315 %316 = zext nneg i32 %313 to i64 %317 = shl nuw nsw i64 %316, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep702, ptr nonnull align 4 %gep414, i64 %317, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep702, ptr nonnull align 4 %gep414, i64 %317, i1 false), !tbaa !17 br label %._crit_edge418 ._crit_edge418: ; preds = %.lr.ph417, %309 @@ -2094,7 +2094,7 @@ define dso_local i32 @onigenc_unicode_get_case_fold_codes_by_str(ptr noundef rea %gep = getelementptr inbounds nuw i32, ptr getelementptr inbounds nuw (i8, ptr @OnigUnicodeFolds1, i64 8), i64 %379 %380 = zext nneg i32 %377 to i64 %381 = shl nuw nsw i64 %380, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep700, ptr nonnull align 4 %gep, i64 %381, i1 false), !tbaa !17 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %gep700, ptr nonnull align 4 %gep, i64 %381, i1 false), !tbaa !17 br label %._crit_edge ._crit_edge: ; preds = %.lr.ph390, %373 diff --git a/bench/open3d/optimized/ImageCPU.ll b/bench/open3d/optimized/ImageCPU.ll index 3ea72e1afdf..c456dc962f7 100644 --- a/bench/open3d/optimized/ImageCPU.ll +++ b/bench/open3d/optimized/ImageCPU.ll @@ -70284,7 +70284,7 @@ _ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35: ; preds = call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #16 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #16 - br label %141 + br label %142 58: ; preds = %29, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit %59 = landingpad { ptr, i32 } @@ -70308,7 +70308,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i36 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i36, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i37 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #16 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #16 - br label %141 + br label %142 66: ; preds = %_ZNK6open3d4core6Tensor12IsContiguousEv.exit call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %12) #16 @@ -70442,7 +70442,7 @@ _ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58: ; preds = call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #16 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %12) #16 - br label %141 + br label %142 108: ; preds = %79, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit39 %109 = landingpad { ptr, i32 } @@ -70466,60 +70466,61 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i59 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i60 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #16 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #16 - br label %141 + br label %142 116: ; preds = %_ZNK6open3d4core6Tensor12IsContiguousEv.exit57 %117 = call noundef ptr @_ZNK6open3d4core6Tensor10GetDataPtrIdEEPKT_v(ptr noundef nonnull align 8 dereferenceable(160) %1) %118 = call noundef ptr @_ZNK6open3d4core6Tensor10GetDataPtrIdEEPKT_v(ptr noundef nonnull align 8 dereferenceable(160) %2) br label %.preheader -.preheader: ; preds = %116, %136 - %indvars.iv69 = phi i64 [ 0, %116 ], [ %indvars.iv.next70, %136 ] +.preheader: ; preds = %116, %137 + %indvars.iv69 = phi i64 [ 0, %116 ], [ %indvars.iv.next70, %137 ] + %119 = getelementptr inbounds nuw [3 x [4 x float]], ptr %0, i64 0, i64 %indvars.iv69 %.idx = shl nuw nsw i64 %indvars.iv69, 5 %invariant.gep = getelementptr inbounds nuw i8, ptr %118, i64 %.idx - br label %137 - -119: ; preds = %136 - %120 = load double, ptr %117, align 8, !tbaa !69 - %121 = fptrunc double %120 to float - %122 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store float %121, ptr %122, align 4, !tbaa !1440 - %123 = getelementptr inbounds nuw i8, ptr %117, i64 32 - %124 = load double, ptr %123, align 8, !tbaa !69 - %125 = fptrunc double %124 to float - %126 = getelementptr inbounds nuw i8, ptr %0, i64 52 - store float %125, ptr %126, align 4, !tbaa !1441 - %127 = getelementptr inbounds nuw i8, ptr %117, i64 16 - %128 = load double, ptr %127, align 8, !tbaa !69 - %129 = fptrunc double %128 to float - %130 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store float %129, ptr %130, align 4, !tbaa !1442 - %131 = getelementptr inbounds nuw i8, ptr %117, i64 40 - %132 = load double, ptr %131, align 8, !tbaa !69 - %133 = fptrunc double %132 to float - %134 = getelementptr inbounds nuw i8, ptr %0, i64 60 - store float %133, ptr %134, align 4, !tbaa !1443 - %135 = getelementptr inbounds nuw i8, ptr %0, i64 64 - store float %3, ptr %135, align 4, !tbaa !1444 + br label %138 + +120: ; preds = %137 + %121 = load double, ptr %117, align 8, !tbaa !69 + %122 = fptrunc double %121 to float + %123 = getelementptr inbounds nuw i8, ptr %0, i64 48 + store float %122, ptr %123, align 4, !tbaa !1440 + %124 = getelementptr inbounds nuw i8, ptr %117, i64 32 + %125 = load double, ptr %124, align 8, !tbaa !69 + %126 = fptrunc double %125 to float + %127 = getelementptr inbounds nuw i8, ptr %0, i64 52 + store float %126, ptr %127, align 4, !tbaa !1441 + %128 = getelementptr inbounds nuw i8, ptr %117, i64 16 + %129 = load double, ptr %128, align 8, !tbaa !69 + %130 = fptrunc double %129 to float + %131 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store float %130, ptr %131, align 4, !tbaa !1442 + %132 = getelementptr inbounds nuw i8, ptr %117, i64 40 + %133 = load double, ptr %132, align 8, !tbaa !69 + %134 = fptrunc double %133 to float + %135 = getelementptr inbounds nuw i8, ptr %0, i64 60 + store float %134, ptr %135, align 4, !tbaa !1443 + %136 = getelementptr inbounds nuw i8, ptr %0, i64 64 + store float %3, ptr %136, align 4, !tbaa !1444 ret void -136: ; preds = %137 +137: ; preds = %138 %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1 %exitcond72.not = icmp eq i64 %indvars.iv.next70, 3 - br i1 %exitcond72.not, label %119, label %.preheader, !llvm.loop !1445 + br i1 %exitcond72.not, label %120, label %.preheader, !llvm.loop !1445 -137: ; preds = %.preheader, %137 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %137 ] +138: ; preds = %.preheader, %138 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %138 ] %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv - %138 = load double, ptr %gep, align 8, !tbaa !69 - %139 = fptrunc double %138 to float - %140 = getelementptr inbounds nuw [3 x [4 x float]], ptr %0, i64 0, i64 %indvars.iv69, i64 %indvars.iv - store float %139, ptr %140, align 4, !tbaa !38 + %139 = load double, ptr %gep, align 8, !tbaa !69 + %140 = fptrunc double %139 to float + %141 = getelementptr inbounds nuw [4 x float], ptr %119, i64 0, i64 %indvars.iv + store float %140, ptr %141, align 4, !tbaa !38 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %136, label %137, !llvm.loop !1446 + br i1 %exitcond.not, label %137, label %138, !llvm.loop !1446 -141: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35 +142: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35 %.pn32.pn = phi { ptr, i32 } [ %109, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61 ], [ %103, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58 ], [ %59, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38 ], [ %53, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35 ] resume { ptr, i32 } %.pn32.pn } diff --git a/bench/open3d/optimized/ScalableTSDFVolume.ll b/bench/open3d/optimized/ScalableTSDFVolume.ll index 63cb0e9da06..5149672fd46 100644 --- a/bench/open3d/optimized/ScalableTSDFVolume.ll +++ b/bench/open3d/optimized/ScalableTSDFVolume.ll @@ -3326,14 +3326,12 @@ _ZNKSt8__detail15_Hashtable_baseIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESt4pairIK br label %241 .preheader368: ; preds = %664 - switch i32 %.3107, label %.lr.ph [ - i32 255, label %.loopexit369 - i32 0, label %.loopexit369 - ] + %235 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232 + %236 = load i32, ptr %235, align 16, !tbaa !27 + %.not123418 = icmp eq i32 %236, -1 + br i1 %.not123418, label %.loopexit369, label %.lr.ph .lr.ph: ; preds = %.preheader368 - %235 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 0 - %236 = load i32, ptr %235, align 16, !tbaa !27 %237 = load ptr, ptr %0, align 8, !tbaa !191 %238 = getelementptr inbounds nuw i8, ptr %237, i64 120 %239 = getelementptr inbounds nuw i8, ptr %237, i64 128 @@ -4352,12 +4350,12 @@ _ZNSt10_HashtableIN5Eigen6MatrixIiLi4ELi1ELi0ELi4ELi1EEESt4pairIKS2_iENS0_17alig %668 = sext i32 %667 to i64 %669 = getelementptr inbounds [12 x i32], ptr %4, i64 0, i64 %668 %670 = add nuw nsw i64 %indvars.iv474, 2 - %671 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 %670 + %671 = getelementptr inbounds nuw [16 x i32], ptr %235, i64 0, i64 %670 %672 = load i32, ptr %671, align 4, !tbaa !27 %673 = sext i32 %672 to i64 %674 = getelementptr inbounds [12 x i32], ptr %4, i64 0, i64 %673 %675 = add nuw nsw i64 %indvars.iv474, 1 - %676 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 %675 + %676 = getelementptr inbounds nuw [16 x i32], ptr %235, i64 0, i64 %675 %677 = load i32, ptr %676, align 4, !tbaa !27 %678 = sext i32 %677 to i64 %679 = getelementptr inbounds [12 x i32], ptr %4, i64 0, i64 %678 @@ -4446,7 +4444,7 @@ _ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE17_M_realloc_insertIJ _ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, %684 %707 = phi ptr [ %704, %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i ], [ %686, %684 ] %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 3 - %708 = getelementptr inbounds nuw [256 x [16 x i32]], ptr @_ZN12_GLOBAL__N_19tri_tableE, i64 0, i64 %232, i64 %indvars.iv.next475 + %708 = getelementptr inbounds nuw [16 x i32], ptr %235, i64 0, i64 %indvars.iv.next475 %709 = load i32, ptr %708, align 4, !tbaa !27 %.not123 = icmp eq i32 %709, -1 br i1 %.not123, label %.loopexit369, label %665, !llvm.loop !236 @@ -4461,7 +4459,7 @@ _ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit: cleanup br label %713 -.loopexit369: ; preds = %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit, %.preheader368, %.preheader368, %.thread354, %231, %231 +.loopexit369: ; preds = %_ZNSt6vectorIN5Eigen6MatrixIiLi3ELi1ELi0ELi3ELi1EEESaIS2_EE9push_backEOS2_.exit, %.preheader368, %.thread354, %231, %231 call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %6) #32 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #32 %710 = add nuw nsw i32 %storemerge114420, 1 diff --git a/bench/opencc/optimized/bit-vector.ll b/bench/opencc/optimized/bit-vector.ll index 1429e993196..27a91403d8f 100644 --- a/bench/opencc/optimized/bit-vector.ll +++ b/bench/opencc/optimized/bit-vector.ll @@ -165,7 +165,7 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select0Em(ptr noundef 10: ; preds = %2 %11 = zext i32 %9 to i64 - br label %141 + br label %142 12: ; preds = %2 %13 = lshr i32 %9, 9 @@ -348,16 +348,17 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select0Em(ptr noundef %132 = lshr i64 %131, %129 %133 = and i64 %132, 255 %134 = sub i64 %.066, %133 - %135 = and i64 %130, 255 - %136 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %134, i64 %135 - %137 = load i8, ptr %136, align 1, !tbaa !29 - %138 = zext i8 %137 to i64 - %139 = add i64 %108, %138 - %140 = add i64 %139, %129 - br label %141 - -141: ; preds = %107, %10 - %.065 = phi i64 [ %11, %10 ], [ %140, %107 ] + %135 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %134 + %136 = and i64 %130, 255 + %137 = getelementptr inbounds nuw [256 x i8], ptr %135, i64 0, i64 %136 + %138 = load i8, ptr %137, align 1, !tbaa !29 + %139 = zext i8 %138 to i64 + %140 = add i64 %108, %139 + %141 = add i64 %140, %129 + br label %142 + +142: ; preds = %107, %10 + %.065 = phi i64 [ %11, %10 ], [ %141, %107 ] ret i64 %.065 } @@ -374,7 +375,7 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select1Em(ptr noundef 10: ; preds = %2 %11 = zext i32 %9 to i64 - br label %128 + br label %129 12: ; preds = %2 %13 = lshr i32 %9, 9 @@ -536,16 +537,17 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select1Em(ptr noundef %119 = lshr i64 %118, %116 %120 = and i64 %119, 255 %121 = sub i64 %.063, %120 - %122 = and i64 %117, 255 - %123 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %121, i64 %122 - %124 = load i8, ptr %123, align 1, !tbaa !29 - %125 = zext i8 %124 to i64 - %126 = add i64 %96, %125 - %127 = add i64 %126, %116 - br label %128 - -128: ; preds = %95, %10 - %.062 = phi i64 [ %11, %10 ], [ %127, %95 ] + %122 = getelementptr inbounds nuw [8 x [256 x i8]], ptr @_ZN6marisa8grimoire6vector12_GLOBAL__N_112SELECT_TABLEE, i64 0, i64 %121 + %123 = and i64 %117, 255 + %124 = getelementptr inbounds nuw [256 x i8], ptr %122, i64 0, i64 %123 + %125 = load i8, ptr %124, align 1, !tbaa !29 + %126 = zext i8 %125 to i64 + %127 = add i64 %96, %126 + %128 = add i64 %127, %116 + br label %129 + +129: ; preds = %95, %10 + %.062 = phi i64 [ %11, %10 ], [ %128, %95 ] ret i64 %.062 } diff --git a/bench/opencv/optimized/AKAZEFeatures.ll b/bench/opencv/optimized/AKAZEFeatures.ll index 5dd34ef83db..17bcb00dec2 100644 --- a/bench/opencv/optimized/AKAZEFeatures.ll +++ b/bench/opencv/optimized/AKAZEFeatures.ll @@ -9996,88 +9996,89 @@ define internal fastcc void @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3 %2 = alloca %"class.std::allocator.31", align 1 br label %.preheader -.preheader: ; preds = %0, %7 - %.0215 = phi i32 [ -6, %0 ], [ %8, %7 ] - %.0224 = phi i32 [ 0, %0 ], [ %.2, %7 ] +.preheader: ; preds = %0, %8 + %.0215 = phi i32 [ -6, %0 ], [ %9, %8 ] + %.0224 = phi i32 [ 0, %0 ], [ %.2, %8 ] %3 = mul nsw i32 %.0215, %.0215 %4 = tail call i32 @llvm.abs.i32(i32 %.0215, i1 true) %5 = zext nneg i32 %4 to i64 - br label %9 + %6 = getelementptr inbounds nuw [7 x [7 x float]], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E7gauss25, i64 0, i64 %5 + br label %10 -6: ; preds = %7 +7: ; preds = %8 ret void -7: ; preds = %35 - %8 = add nsw i32 %.0215, 1 - %exitcond6.not = icmp eq i32 %8, 7 - br i1 %exitcond6.not, label %6, label %.preheader, !llvm.loop !323 +8: ; preds = %36 + %9 = add nsw i32 %.0215, 1 + %exitcond6.not = icmp eq i32 %9, 7 + br i1 %exitcond6.not, label %7, label %.preheader, !llvm.loop !323 -9: ; preds = %.preheader, %35 - %.0203 = phi i32 [ -6, %.preheader ], [ %36, %35 ] - %.12 = phi i32 [ %.0224, %.preheader ], [ %.2, %35 ] - %10 = mul nsw i32 %.0203, %.0203 - %11 = add nuw nsw i32 %10, %3 - %12 = icmp samesign ult i32 %11, 36 - br i1 %12, label %13, label %35 +10: ; preds = %.preheader, %36 + %.0203 = phi i32 [ -6, %.preheader ], [ %37, %36 ] + %.12 = phi i32 [ %.0224, %.preheader ], [ %.2, %36 ] + %11 = mul nsw i32 %.0203, %.0203 + %12 = add nuw nsw i32 %11, %3 + %13 = icmp samesign ult i32 %12, 36 + br i1 %13, label %14, label %36 -13: ; preds = %9 - %14 = icmp slt i32 %.12, 109 - br i1 %14, label %25, label %15 +14: ; preds = %10 + %15 = icmp slt i32 %.12, 109 + br i1 %15, label %26, label %16 -15: ; preds = %13 +16: ; preds = %14 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %1) #24 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2) #24 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %2) invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @__func__._ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_EN6gtableC2Ev, ptr noundef nonnull @.str.1, i32 noundef 1283) #26 - to label %16 unwind label %17 + to label %17 unwind label %18 -16: ; preds = %15 +17: ; preds = %16 unreachable -17: ; preds = %15 - %18 = landingpad { ptr, i32 } +18: ; preds = %16 + %19 = landingpad { ptr, i32 } cleanup - %19 = load ptr, ptr %1, align 8, !tbaa !46 - %20 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %21 = icmp eq ptr %19, %20 - br i1 %21, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %20 = load ptr, ptr %1, align 8, !tbaa !46 + %21 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %22 = icmp eq ptr %20, %21 + br i1 %22, 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 = %17 - %22 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %23 = load i64, ptr %22, align 8, !tbaa !50 - %24 = icmp ult i64 %23, 16 - call void @llvm.assume(i1 %24) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %18 + %23 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %24 = load i64, ptr %23, align 8, !tbaa !50 + %25 = icmp ult i64 %24, 16 + call void @llvm.assume(i1 %25) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %17 - call void @_ZdlPv(ptr noundef %19) #25 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %18 + call void @_ZdlPv(ptr noundef %20) #25 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #24 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %1) #24 - resume { ptr, i32 } %18 - -25: ; preds = %13 - %26 = tail call i32 @llvm.abs.i32(i32 %.0203, i1 true) - %27 = zext nneg i32 %26 to i64 - %28 = getelementptr inbounds nuw [7 x [7 x float]], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E7gauss25, i64 0, i64 %5, i64 %27 - %29 = load float, ptr %28, align 4, !tbaa !8 - %30 = sext i32 %.12 to i64 - %31 = getelementptr inbounds [109 x float], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 0, i64 %30 - store float %29, ptr %31, align 4, !tbaa !8 - %32 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 872), i64 0, i64 %30 - store i32 %.0215, ptr %32, align 4, !tbaa !4 - %33 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 436), i64 0, i64 %30 - store i32 %.0203, ptr %33, align 4, !tbaa !4 - %34 = add nsw i32 %.12, 1 - br label %35 + resume { ptr, i32 } %19 + +26: ; preds = %14 + %27 = tail call i32 @llvm.abs.i32(i32 %.0203, i1 true) + %28 = zext nneg i32 %27 to i64 + %29 = getelementptr inbounds nuw [7 x float], ptr %6, i64 0, i64 %28 + %30 = load float, ptr %29, align 4, !tbaa !8 + %31 = sext i32 %.12 to i64 + %32 = getelementptr inbounds [109 x float], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 0, i64 %31 + store float %30, ptr %32, align 4, !tbaa !8 + %33 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 872), i64 0, i64 %31 + store i32 %.0215, ptr %33, align 4, !tbaa !4 + %34 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 436), i64 0, i64 %31 + store i32 %.0203, ptr %34, align 4, !tbaa !4 + %35 = add nsw i32 %.12, 1 + br label %36 -35: ; preds = %9, %25 - %.2 = phi i32 [ %34, %25 ], [ %.12, %9 ] - %36 = add nsw i32 %.0203, 1 - %exitcond.not = icmp eq i32 %36, 7 - br i1 %exitcond.not, label %7, label %9, !llvm.loop !324 +36: ; preds = %10, %26 + %.2 = phi i32 [ %35, %26 ], [ %.12, %10 ] + %37 = add nsw i32 %.0203, 1 + %exitcond.not = icmp eq i32 %37, 7 + br i1 %exitcond.not, label %8, label %10, !llvm.loop !324 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/opencv/optimized/ap3p.ll b/bench/opencv/optimized/ap3p.ll index 2b46290cc8f..6280f47eddd 100644 --- a/bench/opencv/optimized/ap3p.ll +++ b/bench/opencv/optimized/ap3p.ll @@ -618,44 +618,53 @@ _ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit: ; preds = %._crit_edge.us.i, %359 = getelementptr inbounds nuw [4 x double], ptr %8, i64 0, i64 %indvars.iv542 store double %356, ptr %359, align 8, !tbaa !32 store double %.pre, ptr %355, align 8, !tbaa !32 - br label %.preheader.i - -.preheader.i: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %358 - %.05.i = phi i64 [ 0, %358 ], [ %366, %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i ] - br label %360 - -360: ; preds = %360, %.preheader.i - %.05.i.i = phi i64 [ %365, %360 ], [ 0, %.preheader.i ] - %361 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv542, i64 %.05.i, i64 %.05.i.i - %362 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv.next543, i64 %.05.i, i64 %.05.i.i - %363 = load double, ptr %361, align 8, !tbaa !32 - %364 = load double, ptr %362, align 8, !tbaa !32 - store double %364, ptr %361, align 8, !tbaa !32 - store double %363, ptr %362, align 8, !tbaa !32 - %365 = add nuw nsw i64 %.05.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %365, 3 - br i1 %exitcond.not.i.i, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, label %360, !llvm.loop !39 - -_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i: ; preds = %360 - %366 = add nuw nsw i64 %.05.i, 1 - %exitcond.not.i237 = icmp eq i64 %366, 3 - br i1 %exitcond.not.i237, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, label %.preheader.i, !llvm.loop !40 - -_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit - %.05.i238 = phi i64 [ %371, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit ], [ 0, %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i ] - %367 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv542, i64 %.05.i238 - %368 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv.next543, i64 %.05.i238 + %360 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv542 + %361 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv.next543 + br label %362 + +362: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %358 + %.05.i = phi i64 [ 0, %358 ], [ %371, %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i ] + %363 = getelementptr inbounds nuw [3 x [3 x double]], ptr %360, i64 0, i64 %.05.i + %364 = getelementptr inbounds nuw [3 x [3 x double]], ptr %361, i64 0, i64 %.05.i + br label %365 + +365: ; preds = %365, %362 + %.05.i.i = phi i64 [ 0, %362 ], [ %370, %365 ] + %366 = getelementptr inbounds nuw [3 x double], ptr %363, i64 0, i64 %.05.i.i + %367 = getelementptr inbounds nuw [3 x double], ptr %364, i64 0, i64 %.05.i.i + %368 = load double, ptr %366, align 8, !tbaa !32 %369 = load double, ptr %367, align 8, !tbaa !32 - %370 = load double, ptr %368, align 8, !tbaa !32 - store double %370, ptr %367, align 8, !tbaa !32 - store double %369, ptr %368, align 8, !tbaa !32 - %371 = add nuw nsw i64 %.05.i238, 1 - %exitcond.not.i239 = icmp eq i64 %371, 3 - br i1 %exitcond.not.i239, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, !llvm.loop !39 - -_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit: ; preds = %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit - %372 = icmp sgt i64 %indvars.iv542, 1 - br i1 %372, label %354, label %.critedge, !llvm.loop !41 + store double %369, ptr %366, align 8, !tbaa !32 + store double %368, ptr %367, align 8, !tbaa !32 + %370 = add nuw nsw i64 %.05.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %370, 3 + br i1 %exitcond.not.i.i, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, label %365, !llvm.loop !39 + +_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i: ; preds = %365 + %371 = add nuw nsw i64 %.05.i, 1 + %exitcond.not.i237 = icmp eq i64 %371, 3 + br i1 %exitcond.not.i237, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, label %362, !llvm.loop !40 + +_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i + %372 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv542 + %373 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv.next543 + br label %374 + +374: ; preds = %374, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit + %.05.i238 = phi i64 [ 0, %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit ], [ %379, %374 ] + %375 = getelementptr inbounds nuw [3 x double], ptr %372, i64 0, i64 %.05.i238 + %376 = getelementptr inbounds nuw [3 x double], ptr %373, i64 0, i64 %.05.i238 + %377 = load double, ptr %375, align 8, !tbaa !32 + %378 = load double, ptr %376, align 8, !tbaa !32 + store double %378, ptr %375, align 8, !tbaa !32 + store double %377, ptr %376, align 8, !tbaa !32 + %379 = add nuw nsw i64 %.05.i238, 1 + %exitcond.not.i239 = icmp eq i64 %379, 3 + br i1 %exitcond.not.i239, label %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit, label %374, !llvm.loop !39 + +_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit: ; preds = %374 + %380 = icmp sgt i64 %indvars.iv542, 1 + br i1 %380, label %354, label %.critedge, !llvm.loop !41 .loopexit: ; preds = %.critedge, %_ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit, %._crit_edge %.0233.lcssa550 = phi i32 [ %.1, %._crit_edge ], [ 0, %_ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit ], [ %.1, %.critedge ] diff --git a/bench/opencv/optimized/trackerKCF.ll b/bench/opencv/optimized/trackerKCF.ll index b5c25d2f74e..bdade29343b 100644 --- a/bench/opencv/optimized/trackerKCF.ll +++ b/bench/opencv/optimized/trackerKCF.ll @@ -7754,20 +7754,20 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 ._crit_edge26: ; preds = %._crit_edge, %.preheader.lr.ph, %24 ret void -._crit_edge.loopexit: ; preds = %73 +._crit_edge.loopexit: ; preds = %74 %.pre = load i32, ptr %25, align 8, !tbaa !123 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader %38 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %35, %.preheader ] - %39 = phi i32 [ %74, %._crit_edge.loopexit ], [ %36, %.preheader ] + %39 = phi i32 [ %75, %._crit_edge.loopexit ], [ %36, %.preheader ] %indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1 %40 = sext i32 %38 to i64 %41 = icmp slt i64 %indvars.iv.next33, %40 br i1 %41, label %.preheader, label %._crit_edge26, !llvm.loop !186 -.lr.ph: ; preds = %.preheader, %73 - %indvars.iv29 = phi i64 [ %indvars.iv.next30, %73 ], [ 0, %.preheader ] +.lr.ph: ; preds = %.preheader, %74 + %indvars.iv29 = phi i64 [ %indvars.iv.next30, %74 ], [ 0, %.preheader ] %42 = load ptr, ptr %5, align 8, !tbaa !130 %43 = load ptr, ptr %7, align 8, !tbaa !131 %44 = load i64, ptr %43, align 8, !tbaa !83 @@ -7794,30 +7794,31 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 %64 = call double @llvm.fmuladd.f64(double %63, double 1.024000e+03, double %58) %65 = fptoui double %64 to i32 %66 = zext i32 %65 to i64 - %67 = load ptr, ptr %31, align 8, !tbaa !130 - %68 = load ptr, ptr %32, align 8, !tbaa !131 - %69 = load i64, ptr %68, align 8, !tbaa !83 - %70 = mul i64 %69, %indvars.iv32 - %71 = getelementptr inbounds nuw i8, ptr %67, i64 %70 - %72 = getelementptr inbounds nuw %"class.cv::Vec.24", ptr %71, i64 %indvars.iv29 - br label %77 - -73: ; preds = %77 + %67 = getelementptr inbounds nuw [0 x [10 x float]], ptr @_ZN2cv6detail8tracking10ColorNamesE, i64 0, i64 %66 + %68 = load ptr, ptr %31, align 8, !tbaa !130 + %69 = load ptr, ptr %32, align 8, !tbaa !131 + %70 = load i64, ptr %69, align 8, !tbaa !83 + %71 = mul i64 %70, %indvars.iv32 + %72 = getelementptr inbounds nuw i8, ptr %68, i64 %71 + %73 = getelementptr inbounds nuw %"class.cv::Vec.24", ptr %72, i64 %indvars.iv29 + br label %78 + +74: ; preds = %78 %indvars.iv.next30 = add nuw nsw i64 %indvars.iv29, 1 - %74 = load i32, ptr %28, align 4, !tbaa !124 - %75 = sext i32 %74 to i64 - %76 = icmp slt i64 %indvars.iv.next30, %75 - br i1 %76, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !188 - -77: ; preds = %.lr.ph, %77 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %77 ] - %78 = getelementptr inbounds nuw [0 x [10 x float]], ptr @_ZN2cv6detail8tracking10ColorNamesE, i64 0, i64 %66, i64 %indvars.iv - %79 = load float, ptr %78, align 4, !tbaa !7 - %80 = getelementptr inbounds nuw [10 x float], ptr %72, i64 0, i64 %indvars.iv - store float %79, ptr %80, align 4, !tbaa !7 + %75 = load i32, ptr %28, align 4, !tbaa !124 + %76 = sext i32 %75 to i64 + %77 = icmp slt i64 %indvars.iv.next30, %76 + br i1 %77, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !188 + +78: ; preds = %.lr.ph, %78 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %78 ] + %79 = getelementptr inbounds nuw [10 x float], ptr %67, i64 0, i64 %indvars.iv + %80 = load float, ptr %79, align 4, !tbaa !7 + %81 = getelementptr inbounds nuw [10 x float], ptr %73, i64 0, i64 %indvars.iv + store float %80, ptr %81, align 4, !tbaa !7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 - br i1 %exitcond.not, label %73, label %77, !llvm.loop !189 + br i1 %exitcond.not, label %74, label %78, !llvm.loop !189 } declare void @_ZNK2cv3Mat3mulERKNS_11_InputArrayEd(ptr dead_on_unwind writable sret(%"class.cv::MatExpr") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), double noundef) local_unnamed_addr #0 diff --git a/bench/openjdk/optimized/AlphaMath.ll b/bench/openjdk/optimized/AlphaMath.ll index 8b83dec0ed9..c2fc05e47c7 100644 --- a/bench/openjdk/optimized/AlphaMath.ll +++ b/bench/openjdk/optimized/AlphaMath.ll @@ -10,63 +10,65 @@ target triple = "x86_64-pc-linux-gnu" define hidden void @initAlphaTables() local_unnamed_addr #0 { br label %1 -1: ; preds = %0, %11 - %indvars.iv44 = phi i64 [ 1, %0 ], [ %indvars.iv.next45, %11 ] +1: ; preds = %0, %12 + %indvars.iv44 = phi i64 [ 1, %0 ], [ %indvars.iv.next45, %12 ] %2 = mul nuw nsw i64 %indvars.iv44, 65793 - %3 = trunc i64 %2 to i32 - %4 = add i32 %3, 8388608 - %5 = trunc nuw nsw i64 %2 to i32 - br label %6 + %3 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @mul8table, i64 0, i64 %indvars.iv44 + %4 = trunc i64 %2 to i32 + %5 = add i32 %4, 8388608 + %6 = trunc nuw nsw i64 %2 to i32 + br label %7 -6: ; preds = %1, %6 - %indvars.iv = phi i64 [ 1, %1 ], [ %indvars.iv.next, %6 ] - %.03137 = phi i32 [ %4, %1 ], [ %10, %6 ] - %7 = lshr i32 %.03137, 24 - %8 = trunc nuw i32 %7 to i8 - %9 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @mul8table, i64 0, i64 %indvars.iv44, i64 %indvars.iv - store i8 %8, ptr %9, align 1 - %10 = add i32 %.03137, %5 +7: ; preds = %1, %7 + %indvars.iv = phi i64 [ 1, %1 ], [ %indvars.iv.next, %7 ] + %.03137 = phi i32 [ %5, %1 ], [ %11, %7 ] + %8 = lshr i32 %.03137, 24 + %9 = trunc nuw i32 %8 to i8 + %10 = getelementptr inbounds nuw [256 x i8], ptr %3, i64 0, i64 %indvars.iv + store i8 %9, ptr %10, align 1 + %11 = add i32 %.03137, %6 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 256 - br i1 %exitcond.not, label %11, label %6, !llvm.loop !6 + br i1 %exitcond.not, label %12, label %7, !llvm.loop !6 -11: ; preds = %6 +12: ; preds = %7 %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 %exitcond47.not = icmp eq i64 %indvars.iv.next45, 256 br i1 %exitcond47.not, label %.preheader35, label %1, !llvm.loop !8 -.preheader35: ; preds = %11, %._crit_edge - %indvars.iv52 = phi i64 [ %indvars.iv.next53, %._crit_edge ], [ 1, %11 ] - %indvar = phi i64 [ %indvar.next, %._crit_edge ], [ 0, %11 ] - %12 = mul nuw nsw i64 %indvar, 257 - %gep = getelementptr i8, ptr getelementptr inbounds nuw (i8, ptr @div8table, i64 257), i64 %12 - %13 = sub nsw i64 255, %indvar - %14 = trunc nuw nsw i64 %indvars.iv52 to i32 - %15 = lshr i32 %14, 1 - %16 = or disjoint i32 %15, -16777216 - %17 = udiv i32 %16, %14 - br label %18 +.preheader35: ; preds = %12, %._crit_edge + %indvars.iv52 = phi i64 [ %indvars.iv.next53, %._crit_edge ], [ 1, %12 ] + %indvar = phi i64 [ %indvar.next, %._crit_edge ], [ 0, %12 ] + %13 = mul nuw nsw i64 %indvar, 257 + %gep = getelementptr i8, ptr getelementptr inbounds nuw (i8, ptr @div8table, i64 257), i64 %13 + %14 = sub nsw i64 255, %indvar + %15 = trunc nuw nsw i64 %indvars.iv52 to i32 + %16 = lshr i32 %15, 1 + %17 = or disjoint i32 %16, -16777216 + %18 = udiv i32 %17, %15 + %19 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @div8table, i64 0, i64 %indvars.iv52 + br label %20 -18: ; preds = %.preheader35, %18 - %indvars.iv48 = phi i64 [ 0, %.preheader35 ], [ %indvars.iv.next49, %18 ] - %.040 = phi i32 [ 8388608, %.preheader35 ], [ %22, %18 ] - %19 = lshr i32 %.040, 24 - %20 = trunc nuw i32 %19 to i8 - %21 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @div8table, i64 0, i64 %indvars.iv52, i64 %indvars.iv48 - store i8 %20, ptr %21, align 1 - %22 = add i32 %.040, %17 +20: ; preds = %.preheader35, %20 + %indvars.iv48 = phi i64 [ 0, %.preheader35 ], [ %indvars.iv.next49, %20 ] + %.040 = phi i32 [ 8388608, %.preheader35 ], [ %24, %20 ] + %21 = lshr i32 %.040, 24 + %22 = trunc nuw i32 %21 to i8 + %23 = getelementptr inbounds nuw [256 x i8], ptr %19, i64 0, i64 %indvars.iv48 + store i8 %22, ptr %23, align 1 + %24 = add i32 %.040, %18 %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 %exitcond51.not = icmp eq i64 %indvars.iv.next49, %indvars.iv52 - br i1 %exitcond51.not, label %._crit_edge, label %18, !llvm.loop !9 + br i1 %exitcond51.not, label %._crit_edge, label %20, !llvm.loop !9 -._crit_edge: ; preds = %18 - tail call void @llvm.memset.p0.i64(ptr align 1 %gep, i8 -1, i64 %13, i1 false) +._crit_edge: ; preds = %20 + tail call void @llvm.memset.p0.i64(ptr align 1 %gep, i8 -1, i64 %14, i1 false) %indvars.iv.next53 = add nuw nsw i64 %indvars.iv52, 1 %indvar.next = add nuw nsw i64 %indvar, 1 %exitcond58.not = icmp eq i64 %indvar.next, 255 - br i1 %exitcond58.not, label %23, label %.preheader35, !llvm.loop !10 + br i1 %exitcond58.not, label %25, label %.preheader35, !llvm.loop !10 -23: ; preds = %._crit_edge +25: ; preds = %._crit_edge ret void } diff --git a/bench/openjdk/optimized/archiveBuilder.ll b/bench/openjdk/optimized/archiveBuilder.ll index 01a856bd344..47f2af2098b 100644 --- a/bench/openjdk/optimized/archiveBuilder.ll +++ b/bench/openjdk/optimized/archiveBuilder.ll @@ -3281,16 +3281,18 @@ _ZN27ResizeableResourceHashtableIPhS0_LN6AnyObj15allocation_typeE2EL8MEMFLAGS13E %115 = and i8 %113, 1 %116 = xor i8 %115, 1 %117 = zext nneg i8 %116 to i64 - %118 = zext i32 %107 to i64 - %119 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %114, i64 0, i64 %117, i64 %118 - %120 = load i32, ptr %119, align 4 - %121 = add nsw i32 %120, 1 - store i32 %121, ptr %119, align 4 - %122 = getelementptr inbounds nuw i8, ptr %0, i64 836 - %123 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %122, i64 0, i64 %117, i64 %118 - %124 = load i32, ptr %123, align 4 - %125 = add nsw i32 %124, %111 - store i32 %125, ptr %123, align 4 + %118 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %114, i64 0, i64 %117 + %119 = zext i32 %107 to i64 + %120 = getelementptr inbounds nuw [23 x i32], ptr %118, i64 0, i64 %119 + %121 = load i32, ptr %120, align 4 + %122 = add nsw i32 %121, 1 + store i32 %122, ptr %120, align 4 + %123 = getelementptr inbounds nuw i8, ptr %0, i64 836 + %124 = getelementptr inbounds nuw [2 x [23 x i32]], ptr %123, i64 0, i64 %117 + %125 = getelementptr inbounds nuw [23 x i32], ptr %124, i64 0, i64 %119 + %126 = load i32, ptr %125, align 4 + %127 = add nsw i32 %126, %111 + store i32 %127, ptr %125, align 4 ret void } diff --git a/bench/openjdk/optimized/assembler_x86.ll b/bench/openjdk/optimized/assembler_x86.ll index f23f721e573..9eabd61f38c 100644 --- a/bench/openjdk/optimized/assembler_x86.ll +++ b/bench/openjdk/optimized/assembler_x86.ll @@ -980,7 +980,7 @@ define hidden noundef zeroext i1 @_ZN9Assembler26query_compressed_disp_byteEibii %8 = and i64 %7, 134217728 %9 = icmp ne i64 %8, 0 %or.cond = and i1 %1, %9 - br i1 %or.cond, label %10, label %37 + br i1 %or.cond, label %10, label %38 10: ; preds = %6 switch i32 %3, label %switch.lookup [ @@ -1027,34 +1027,35 @@ define hidden noundef zeroext i1 @_ZN9Assembler26query_compressed_disp_byteEibii switch.lookup: ; preds = %20, %10, %13, %16, %22, %18 %.028 = phi i32 [ 0, %10 ], [ %15, %13 ], [ %.lobit32, %16 ], [ %.lobit, %18 ], [ %24, %22 ], [ %spec.select34, %20 ] %or.cond3 = icmp ult i32 %2, 3 - br i1 %or.cond3, label %25, label %37 + br i1 %or.cond3, label %25, label %38 25: ; preds = %switch.lookup %26 = add nsw i32 %.028, %3 %27 = sext i32 %26 to i64 - %28 = zext nneg i32 %2 to i64 - %29 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %27, i64 %28 - %30 = load i8, ptr %29, align 1 - %31 = zext i8 %30 to i32 - %32 = srem i32 %0, %31 - %33 = sdiv i32 %0, %31 - %34 = icmp eq i32 %32, 0 - br i1 %34, label %35, label %40 - -35: ; preds = %25 - %36 = add i32 %33, 128 - %or.cond5 = icmp ult i32 %36, 256 - %spec.select = select i1 %or.cond5, i32 %33, i32 %0 - br label %37 - -37: ; preds = %35, %switch.lookup, %6 - %.027 = phi i32 [ %0, %switch.lookup ], [ %0, %6 ], [ %spec.select, %35 ] - %38 = add i32 %.027, 128 - %39 = icmp ult i32 %38, 256 - br label %40 + %28 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %27 + %29 = zext nneg i32 %2 to i64 + %30 = getelementptr inbounds nuw [3 x i8], ptr %28, i64 0, i64 %29 + %31 = load i8, ptr %30, align 1 + %32 = zext i8 %31 to i32 + %33 = srem i32 %0, %32 + %34 = sdiv i32 %0, %32 + %35 = icmp eq i32 %33, 0 + br i1 %35, label %36, label %41 + +36: ; preds = %25 + %37 = add i32 %34, 128 + %or.cond5 = icmp ult i32 %37, 256 + %spec.select = select i1 %or.cond5, i32 %34, i32 %0 + br label %38 -40: ; preds = %25, %37 - %.0 = phi i1 [ %39, %37 ], [ false, %25 ] +38: ; preds = %36, %switch.lookup, %6 + %.027 = phi i32 [ %0, %switch.lookup ], [ %0, %6 ], [ %spec.select, %36 ] + %39 = add i32 %.027, 128 + %40 = icmp ult i32 %39, 256 + br label %41 + +41: ; preds = %25, %38 + %.0 = phi i1 [ %40, %38 ], [ false, %25 ] ret i1 %.0 } @@ -1063,19 +1064,19 @@ define hidden noundef zeroext i1 @_ZN9Assembler25emit_compressed_disp_byteERi(pt %3 = load i64, ptr @_ZN19Abstract_VM_Version9_featuresE, align 8 %4 = and i64 %3, 134217728 %.not28 = icmp eq i64 %4, 0 - br i1 %.not28, label %52, label %5 + br i1 %.not28, label %53, label %5 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 %7 = load ptr, ptr %6, align 8 %.not = icmp eq ptr %7, null - br i1 %.not, label %52, label %8 + br i1 %.not, label %53, label %8 8: ; preds = %5 %9 = getelementptr inbounds nuw i8, ptr %7, i64 5 %10 = load i8, ptr %9, align 1 %11 = trunc i8 %10 to i1 - br i1 %11, label %12, label %52 + br i1 %11, label %12, label %53 12: ; preds = %8 %13 = getelementptr inbounds nuw i8, ptr %7, i64 20 @@ -1132,38 +1133,39 @@ switch.lookup: ; preds = %26, %12, %19, %22, %35 = getelementptr inbounds nuw i8, ptr %7, i64 8 %36 = load i32, ptr %35, align 8 %or.cond = icmp ult i32 %36, 3 - br i1 %or.cond, label %37, label %52 + br i1 %or.cond, label %37, label %53 37: ; preds = %switch.lookup %38 = add nsw i32 %.020, %16 %39 = sext i32 %38 to i64 - %40 = zext nneg i32 %36 to i64 - %41 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %39, i64 %40 - %42 = load i8, ptr %41, align 1 - %43 = zext i8 %42 to i32 - %44 = load i32, ptr %1, align 4 - %45 = srem i32 %44, %43 - %46 = sdiv i32 %44, %43 - %47 = icmp eq i32 %45, 0 - br i1 %47, label %48, label %56 - -48: ; preds = %37 - %49 = add i32 %46, 128 - %50 = icmp ult i32 %49, 256 - br i1 %50, label %51, label %52 - -51: ; preds = %48 - store i32 %46, ptr %1, align 4 - br label %52 + %40 = getelementptr inbounds [25 x [3 x i8]], ptr @_ZL11tuple_table, i64 0, i64 %39 + %41 = zext nneg i32 %36 to i64 + %42 = getelementptr inbounds nuw [3 x i8], ptr %40, i64 0, i64 %41 + %43 = load i8, ptr %42, align 1 + %44 = zext i8 %43 to i32 + %45 = load i32, ptr %1, align 4 + %46 = srem i32 %45, %44 + %47 = sdiv i32 %45, %44 + %48 = icmp eq i32 %46, 0 + br i1 %48, label %49, label %57 + +49: ; preds = %37 + %50 = add i32 %47, 128 + %51 = icmp ult i32 %50, 256 + br i1 %51, label %52, label %53 + +52: ; preds = %49 + store i32 %47, ptr %1, align 4 + br label %53 -52: ; preds = %switch.lookup, %48, %51, %8, %5, %2 - %53 = load i32, ptr %1, align 4 - %54 = add i32 %53, 128 - %55 = icmp ult i32 %54, 256 - br label %56 +53: ; preds = %switch.lookup, %49, %52, %8, %5, %2 + %54 = load i32, ptr %1, align 4 + %55 = add i32 %54, 128 + %56 = icmp ult i32 %55, 256 + br label %57 -56: ; preds = %37, %52 - %.0 = phi i1 [ %55, %52 ], [ false, %37 ] +57: ; preds = %37, %53 + %.0 = phi i1 [ %56, %53 ], [ false, %37 ] ret i1 %.0 } diff --git a/bench/openjdk/optimized/castnode.ll b/bench/openjdk/optimized/castnode.ll index 85317f0c771..5ed504c98e5 100644 --- a/bench/openjdk/optimized/castnode.ll +++ b/bench/openjdk/optimized/castnode.ll @@ -1802,28 +1802,29 @@ define hidden noundef ptr @_ZNK15CheckCastPPNode5ValueEP8PhaseGVN(ptr noundef no %81 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %80 %82 = load i32, ptr %81, align 4 %83 = zext i32 %82 to i64 - %84 = getelementptr inbounds nuw i8, ptr %.pre38, i64 40 - %85 = load i32, ptr %84, align 8 - %86 = zext i32 %85 to i64 - %87 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %86 - %88 = load i32, ptr %87, align 4 - %89 = zext i32 %88 to i64 - %90 = getelementptr inbounds nuw [6 x [6 x i32]], ptr @_ZN7TypePtr8ptr_meetE, i64 0, i64 %83, i64 %89 - %91 = load i32, ptr %90, align 4 - %92 = zext i32 %91 to i64 - %93 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %92 - %94 = load i32, ptr %93, align 4 - %95 = load ptr, ptr %.pre38, align 8 - %96 = getelementptr inbounds nuw i8, ptr %95, i64 176 - %97 = load ptr, ptr %96, align 8 - %98 = tail call noundef ptr %97(ptr noundef nonnull align 8 dereferenceable(44) %.pre38, i32 noundef %94) #6 + %84 = getelementptr inbounds nuw [6 x [6 x i32]], ptr @_ZN7TypePtr8ptr_meetE, i64 0, i64 %83 + %85 = getelementptr inbounds nuw i8, ptr %.pre38, i64 40 + %86 = load i32, ptr %85, align 8 + %87 = zext i32 %86 to i64 + %88 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %87 + %89 = load i32, ptr %88, align 4 + %90 = zext i32 %89 to i64 + %91 = getelementptr inbounds nuw [6 x i32], ptr %84, i64 0, i64 %90 + %92 = load i32, ptr %91, align 4 + %93 = zext i32 %92 to i64 + %94 = getelementptr inbounds nuw [6 x i32], ptr @_ZN7TypePtr8ptr_dualE, i64 0, i64 %93 + %95 = load i32, ptr %94, align 4 + %96 = load ptr, ptr %.pre38, align 8 + %97 = getelementptr inbounds nuw i8, ptr %96, i64 176 + %98 = load ptr, ptr %97, align 8 + %99 = tail call noundef ptr %98(ptr noundef nonnull align 8 dereferenceable(44) %.pre38, i32 noundef %95) #6 br label %_ZNK18ConstraintCastNode5ValueEP8PhaseGVN.exit .fold.split: ; preds = %76 br label %_ZNK18ConstraintCastNode5ValueEP8PhaseGVN.exit _ZNK18ConstraintCastNode5ValueEP8PhaseGVN.exit: ; preds = %65, %60, %54, %._crit_edge.i, %34, %._crit_edge36, %79, %.fold.split, %76, %16, %6 - %.0 = phi ptr [ %14, %6 ], [ %17, %16 ], [ %98, %79 ], [ %.pre38, %._crit_edge36 ], [ %25, %76 ], [ %.pre38, %.fold.split ], [ %17, %34 ], [ %73, %65 ], [ %48, %60 ], [ %48, %54 ], [ %48, %._crit_edge.i ] + %.0 = phi ptr [ %14, %6 ], [ %17, %16 ], [ %99, %79 ], [ %.pre38, %._crit_edge36 ], [ %25, %76 ], [ %.pre38, %.fold.split ], [ %17, %34 ], [ %73, %65 ], [ %48, %60 ], [ %48, %54 ], [ %48, %._crit_edge.i ] ret ptr %.0 } diff --git a/bench/openjdk/optimized/img_globals.ll b/bench/openjdk/optimized/img_globals.ll index 048f9d9b70e..fd538748ee1 100644 --- a/bench/openjdk/optimized/img_globals.ll +++ b/bench/openjdk/optimized/img_globals.ll @@ -11,29 +11,31 @@ define void @make_uns_ordered_dither_array(ptr noundef captures(none) initialize .preheader52: ; preds = %2, %18 %.055 = phi i32 [ 1, %2 ], [ %19, %18 ] %3 = zext nneg i32 %.055 to i64 + %invariant.gep = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %3 br label %.preheader51 .preheader51: ; preds = %.preheader52, %17 %indvars.iv59 = phi i64 [ 0, %.preheader52 ], [ %indvars.iv.next60, %17 ] - %4 = add nuw nsw i64 %indvars.iv59, %3 + %4 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv59 + %gep = getelementptr inbounds nuw [8 x i8], ptr %invariant.gep, i64 %indvars.iv59 br label %5 5: ; preds = %.preheader51, %5 %indvars.iv = phi i64 [ 0, %.preheader51 ], [ %indvars.iv.next, %5 ] - %6 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv59, i64 %indvars.iv + %6 = getelementptr inbounds nuw [8 x i8], ptr %4, i64 0, i64 %indvars.iv %7 = load i8, ptr %6, align 1 %8 = shl i8 %7, 2 store i8 %8, ptr %6, align 1 %9 = or disjoint i8 %8, 1 %10 = add nuw nsw i64 %indvars.iv, %3 - %11 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %4, i64 %10 + %11 = getelementptr inbounds nuw [8 x i8], ptr %gep, i64 0, i64 %10 store i8 %9, ptr %11, align 1 %12 = load i8, ptr %6, align 1 %13 = add i8 %12, 2 - %14 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv59, i64 %10 + %14 = getelementptr inbounds nuw [8 x i8], ptr %4, i64 0, i64 %10 store i8 %13, ptr %14, align 1 %15 = add i8 %12, 3 - %16 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %4, i64 %indvars.iv + %16 = getelementptr inbounds nuw [8 x i8], ptr %gep, i64 0, i64 %indvars.iv store i8 %15, ptr %16, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %3 @@ -49,29 +51,30 @@ define void @make_uns_ordered_dither_array(ptr noundef captures(none) initialize %20 = icmp samesign ult i32 %.055, 4 br i1 %20, label %.preheader52, label %.preheader, !llvm.loop !9 -.preheader: ; preds = %18, %28 - %indvars.iv68 = phi i64 [ %indvars.iv.next69, %28 ], [ 0, %18 ] - br label %21 - -21: ; preds = %.preheader, %21 - %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %21 ] - %22 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv68, i64 %indvars.iv64 - %23 = load i8, ptr %22, align 1 - %24 = zext i8 %23 to i32 - %25 = mul nsw i32 %1, %24 - %26 = sdiv i32 %25, 64 - %27 = trunc i32 %26 to i8 - store i8 %27, ptr %22, align 1 +.preheader: ; preds = %18, %29 + %indvars.iv68 = phi i64 [ %indvars.iv.next69, %29 ], [ 0, %18 ] + %21 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv68 + br label %22 + +22: ; preds = %.preheader, %22 + %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %22 ] + %23 = getelementptr inbounds nuw [8 x i8], ptr %21, i64 0, i64 %indvars.iv64 + %24 = load i8, ptr %23, align 1 + %25 = zext i8 %24 to i32 + %26 = mul nsw i32 %1, %25 + %27 = sdiv i32 %26, 64 + %28 = trunc i32 %27 to i8 + store i8 %28, ptr %23, align 1 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next65, 8 - br i1 %exitcond67.not, label %28, label %21, !llvm.loop !10 + br i1 %exitcond67.not, label %29, label %22, !llvm.loop !10 -28: ; preds = %21 +29: ; preds = %22 %indvars.iv.next69 = add nuw nsw i64 %indvars.iv68, 1 %exitcond71.not = icmp eq i64 %indvars.iv.next69, 8 - br i1 %exitcond71.not, label %29, label %.preheader, !llvm.loop !11 + br i1 %exitcond71.not, label %30, label %.preheader, !llvm.loop !11 -29: ; preds = %28 +30: ; preds = %29 ret void } diff --git a/bench/openspiel/optimized/CalcTables.ll b/bench/openspiel/optimized/CalcTables.ll index 4650fa2865e..0b32f2e373d 100644 --- a/bench/openspiel/optimized/CalcTables.ll +++ b/bench/openspiel/optimized/CalcTables.ll @@ -501,36 +501,37 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %24 %28 = getelementptr inbounds nuw i8, ptr %4, i64 168 br label %29 -29: ; preds = %.preheader, %42 - %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %42 ] +29: ; preds = %.preheader, %43 + %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %43 ] %30 = getelementptr inbounds nuw [200 x %struct.deal], ptr %10, i64 0, i64 %indvars.iv64 %31 = load i32, ptr %30, align 4 %.idx = mul nuw nsw i64 %indvars.iv64, 216 %32 = getelementptr i8, ptr %28, i64 %.idx %33 = sext i32 %31 to i64 - br label %34 - -34: ; preds = %29, %34 - %indvars.iv60 = phi i64 [ 0, %29 ], [ %indvars.iv.next61, %34 ] - %35 = getelementptr inbounds nuw [13 x i32], ptr %32, i64 0, i64 %indvars.iv60 - %36 = load i32, ptr %35, align 4 - %37 = sub nsw i32 13, %36 - %38 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv60 - %39 = load i32, ptr %38, align 4 - %40 = sext i32 %39 to i64 - %41 = getelementptr inbounds [5 x [4 x i32]], ptr %1, i64 0, i64 %33, i64 %40 - store i32 %37, ptr %41, align 4 + %34 = getelementptr inbounds [5 x [4 x i32]], ptr %1, i64 0, i64 %33 + br label %35 + +35: ; preds = %29, %35 + %indvars.iv60 = phi i64 [ 0, %29 ], [ %indvars.iv.next61, %35 ] + %36 = getelementptr inbounds nuw [13 x i32], ptr %32, i64 0, i64 %indvars.iv60 + %37 = load i32, ptr %36, align 4 + %38 = sub nsw i32 13, %37 + %39 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv60 + %40 = load i32, ptr %39, align 4 + %41 = sext i32 %40 to i64 + %42 = getelementptr inbounds [4 x i32], ptr %34, i64 0, i64 %41 + store i32 %38, ptr %42, align 4 %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 %exitcond63.not = icmp eq i64 %indvars.iv.next61, 4 - br i1 %exitcond63.not, label %42, label %34, !llvm.loop !13 + br i1 %exitcond63.not, label %43, label %35, !llvm.loop !13 -42: ; preds = %34 +43: ; preds = %35 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next65, 5 br i1 %exitcond67.not, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, label %29, !llvm.loop !14 -_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %42, %24, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit - %.032 = phi i32 [ %27, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ %25, %24 ], [ 1, %42 ] +_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %43, %24, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit + %.032 = phi i32 [ %27, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ %25, %24 ], [ 1, %43 ] ret i32 %.032 } @@ -708,70 +709,71 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %49 %64 = getelementptr inbounds nuw [200 x %struct.ddTableResults], ptr %61, i64 0, i64 %indvars.iv161 br label %65 -65: ; preds = %.preheader106.us, %71 - %indvars.iv156 = phi i64 [ 0, %.preheader106.us ], [ %indvars.iv.next157, %71 ] +65: ; preds = %.preheader106.us, %72 + %indvars.iv156 = phi i64 [ 0, %.preheader106.us ], [ %indvars.iv.next157, %72 ] %66 = add nuw nsw i64 %indvars.iv156, %63 %67 = getelementptr inbounds nuw [200 x %struct.deal], ptr %59, i64 0, i64 %66 %68 = load i32, ptr %67, align 4 %.idx.us = mul nuw nsw i64 %66, 216 %69 = getelementptr i8, ptr %60, i64 %.idx.us %70 = sext i32 %68 to i64 - br label %72 + %71 = getelementptr inbounds [5 x [4 x i32]], ptr %64, i64 0, i64 %70 + br label %73 -71: ; preds = %72 +72: ; preds = %73 %indvars.iv.next157 = add nuw nsw i64 %indvars.iv156, 1 %exitcond160.not = icmp eq i64 %indvars.iv.next157, %62 br i1 %exitcond160.not, label %._crit_edge124.us, label %65, !llvm.loop !19 -72: ; preds = %72, %65 - %indvars.iv152 = phi i64 [ %indvars.iv.next153, %72 ], [ 0, %65 ] - %73 = getelementptr inbounds nuw [13 x i32], ptr %69, i64 0, i64 %indvars.iv152 - %74 = load i32, ptr %73, align 4 - %75 = sub nsw i32 13, %74 - %76 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv152 - %77 = load i32, ptr %76, align 4 - %78 = sext i32 %77 to i64 - %79 = getelementptr inbounds [5 x [4 x i32]], ptr %64, i64 0, i64 %70, i64 %78 - store i32 %75, ptr %79, align 4 +73: ; preds = %73, %65 + %indvars.iv152 = phi i64 [ %indvars.iv.next153, %73 ], [ 0, %65 ] + %74 = getelementptr inbounds nuw [13 x i32], ptr %69, i64 0, i64 %indvars.iv152 + %75 = load i32, ptr %74, align 4 + %76 = sub nsw i32 13, %75 + %77 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv152 + %78 = load i32, ptr %77, align 4 + %79 = sext i32 %78 to i64 + %80 = getelementptr inbounds [4 x i32], ptr %71, i64 0, i64 %79 + store i32 %76, ptr %80, align 4 %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1 %exitcond155.not = icmp eq i64 %indvars.iv.next153, 4 - br i1 %exitcond155.not, label %71, label %72, !llvm.loop !20 + br i1 %exitcond155.not, label %72, label %73, !llvm.loop !20 -._crit_edge124.us: ; preds = %71 +._crit_edge124.us: ; preds = %72 %indvars.iv.next162 = add nuw nsw i64 %indvars.iv161, 1 - %80 = load i32, ptr %0, align 4 - %81 = sext i32 %80 to i64 - %82 = icmp slt i64 %indvars.iv.next162, %81 - br i1 %82, label %.preheader106.us, label %._crit_edge126, !llvm.loop !21 + %81 = load i32, ptr %0, align 4 + %82 = sext i32 %81 to i64 + %83 = icmp slt i64 %indvars.iv.next162, %82 + br i1 %83, label %.preheader106.us, label %._crit_edge126, !llvm.loop !21 ._crit_edge126: ; preds = %._crit_edge124.us %or.cond = icmp ult i32 %1, 4 - %83 = icmp eq i32 %spec.select103, 5 - %or.cond3 = select i1 %or.cond, i1 %83, i1 false + %84 = icmp eq i32 %spec.select103, 5 + %or.cond3 = select i1 %or.cond, i1 %84, i1 false br i1 %or.cond3, label %.preheader, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread .preheader: ; preds = %._crit_edge126 - %84 = icmp sgt i32 %80, 0 - %85 = getelementptr inbounds nuw i8, ptr %3, i64 4 - br i1 %84, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread + %85 = icmp sgt i32 %81, 0 + %86 = getelementptr inbounds nuw i8, ptr %3, i64 4 + br i1 %85, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread -86: ; preds = %.lr.ph +87: ; preds = %.lr.ph %indvars.iv.next165 = add nuw nsw i64 %indvars.iv164, 1 - %87 = load i32, ptr %0, align 4 - %88 = sext i32 %87 to i64 - %89 = icmp slt i64 %indvars.iv.next165, %88 - br i1 %89, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, !llvm.loop !22 - -.lr.ph: ; preds = %.preheader, %86 - %indvars.iv164 = phi i64 [ %indvars.iv.next165, %86 ], [ 0, %.preheader ] - %90 = getelementptr inbounds nuw [200 x %struct.ddTableResults], ptr %85, i64 0, i64 %indvars.iv164 - %91 = getelementptr inbounds nuw [40 x %struct.parResults], ptr %4, i64 0, i64 %indvars.iv164 - %92 = call i32 @Par(ptr noundef nonnull %90, ptr noundef %91, i32 noundef %1) - %.not99 = icmp eq i32 %92, 1 - br i1 %.not99, label %86, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread - -_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %.lr.ph, %86, %53, %.preheader106.lr.ph, %.preheader, %49, %._crit_edge, %._crit_edge126, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit, %13, %12 - %.079 = phi i32 [ -201, %12 ], [ -202, %13 ], [ %52, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ 1, %._crit_edge126 ], [ %50, %49 ], [ -101, %._crit_edge ], [ 1, %.preheader ], [ 1, %.preheader106.lr.ph ], [ 1, %53 ], [ %92, %.lr.ph ], [ 1, %86 ] + %88 = load i32, ptr %0, align 4 + %89 = sext i32 %88 to i64 + %90 = icmp slt i64 %indvars.iv.next165, %89 + br i1 %90, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, !llvm.loop !22 + +.lr.ph: ; preds = %.preheader, %87 + %indvars.iv164 = phi i64 [ %indvars.iv.next165, %87 ], [ 0, %.preheader ] + %91 = getelementptr inbounds nuw [200 x %struct.ddTableResults], ptr %86, i64 0, i64 %indvars.iv164 + %92 = getelementptr inbounds nuw [40 x %struct.parResults], ptr %4, i64 0, i64 %indvars.iv164 + %93 = call i32 @Par(ptr noundef nonnull %91, ptr noundef %92, i32 noundef %1) + %.not99 = icmp eq i32 %93, 1 + br i1 %.not99, label %87, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread + +_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %.lr.ph, %87, %53, %.preheader106.lr.ph, %.preheader, %49, %._crit_edge, %._crit_edge126, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit, %13, %12 + %.079 = phi i32 [ -201, %12 ], [ -202, %13 ], [ %52, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ 1, %._crit_edge126 ], [ %50, %49 ], [ -101, %._crit_edge ], [ 1, %.preheader ], [ 1, %.preheader106.lr.ph ], [ 1, %53 ], [ %93, %.lr.ph ], [ 1, %87 ] ret i32 %.079 } diff --git a/bench/openspiel/optimized/PBN.ll b/bench/openspiel/optimized/PBN.ll index a36b1f0ef69..0e3d32ac25f 100644 --- a/bench/openspiel/optimized/PBN.ll +++ b/bench/openspiel/optimized/PBN.ll @@ -64,10 +64,10 @@ define noundef range(i32 0, 2) i32 @_Z14ConvertFromPBNPKcPA4_j(ptr noundef reado %.074 = phi i32 [ 1, %10 ], [ 2, %11 ], [ 3, %12 ], [ 0, %9 ], [ 0, %9 ] br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %45 - %indvars.iv103 = phi i64 [ %indvars.iv101, %.lr.ph.preheader ], [ %indvars.iv.next104, %45 ] - %.07196 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1, %45 ] - %.07295 = phi i32 [ 0, %.lr.ph.preheader ], [ %.173, %45 ] +.lr.ph: ; preds = %.lr.ph.preheader, %46 + %indvars.iv103 = phi i64 [ %indvars.iv101, %.lr.ph.preheader ], [ %indvars.iv.next104, %46 ] + %.07196 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1, %46 ] + %.07295 = phi i32 [ 0, %.lr.ph.preheader ], [ %.173, %46 ] %13 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv103 %14 = load i8, ptr %13, align 1 %.not89 = icmp eq i8 %14, 0 @@ -76,7 +76,7 @@ define noundef range(i32 0, 2) i32 @_Z14ConvertFromPBNPKcPA4_j(ptr noundef reado 15: ; preds = %.lr.ph %16 = tail call noundef i32 @_Z6IsCardc(i8 noundef signext %14) %.not90 = icmp eq i32 %16, 0 - br i1 %.not90, label %40, label %17 + br i1 %.not90, label %41, label %17 17: ; preds = %15 switch i32 %.074, label %default.unreachable [ @@ -129,36 +129,37 @@ default.unreachable: ; preds = %17 %33 = zext i16 %32 to i32 %34 = shl nuw nsw i32 %33, 2 %35 = sext i32 %.0 to i64 - %36 = sext i32 %.07196 to i64 - %37 = getelementptr inbounds [4 x i32], ptr %1, i64 %35, i64 %36 - %38 = load i32, ptr %37, align 4 - %39 = or i32 %34, %38 - store i32 %39, ptr %37, align 4 - br label %45 - -40: ; preds = %15 - switch i8 %14, label %45 [ - i8 46, label %41 - i8 32, label %43 + %36 = getelementptr inbounds [4 x i32], ptr %1, i64 %35 + %37 = sext i32 %.07196 to i64 + %38 = getelementptr inbounds [4 x i32], ptr %36, i64 0, i64 %37 + %39 = load i32, ptr %38, align 4 + %40 = or i32 %34, %39 + store i32 %40, ptr %38, align 4 + br label %46 + +41: ; preds = %15 + switch i8 %14, label %46 [ + i8 46, label %42 + i8 32, label %44 ] -41: ; preds = %40 - %42 = add nsw i32 %.07196, 1 - br label %45 +42: ; preds = %41 + %43 = add nsw i32 %.07196, 1 + br label %46 -43: ; preds = %40 - %44 = add nsw i32 %.07295, 1 - br label %45 +44: ; preds = %41 + %45 = add nsw i32 %.07295, 1 + br label %46 -45: ; preds = %40, %41, %43, %29 - %.173 = phi i32 [ %.07295, %29 ], [ %.07295, %41 ], [ %44, %43 ], [ %.07295, %40 ] - %.1 = phi i32 [ %.07196, %29 ], [ %42, %41 ], [ 0, %43 ], [ %.07196, %40 ] +46: ; preds = %41, %42, %44, %29 + %.173 = phi i32 [ %.07295, %29 ], [ %.07295, %42 ], [ %45, %44 ], [ %.07295, %41 ] + %.1 = phi i32 [ %.07196, %29 ], [ %43, %42 ], [ 0, %44 ], [ %.07196, %41 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond.not = icmp eq i64 %indvars.iv.next104, 80 br i1 %exitcond.not, label %.critedge2, label %.lr.ph, !llvm.loop !6 -.critedge2: ; preds = %45, %.lr.ph, %.critedge - %.070 = phi i32 [ 0, %.critedge ], [ 1, %.lr.ph ], [ 1, %45 ] +.critedge2: ; preds = %46, %.lr.ph, %.critedge + %.070 = phi i32 [ 0, %.critedge ], [ 1, %.lr.ph ], [ 1, %46 ] ret i32 %.070 } diff --git a/bench/openssl/optimized/quic_ackm.ll b/bench/openssl/optimized/quic_ackm.ll index fc70d3fd030..d99393f21a4 100644 --- a/bench/openssl/optimized/quic_ackm.ll +++ b/bench/openssl/optimized/quic_ackm.ll @@ -2441,104 +2441,105 @@ define ptr @ossl_ackm_get_ack_frame(ptr noundef %0, i32 noundef %1) local_unname .lr.ph.i: ; preds = %2 %13 = getelementptr inbounds nuw i8, ptr %0, i64 656 - br label %14 - -14: ; preds = %14, %.lr.ph.i - %.01922.i = phi ptr [ %.01920.i, %.lr.ph.i ], [ %.019.i, %14 ] - %.021.i = phi i64 [ 0, %.lr.ph.i ], [ %22, %14 ] - %15 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 16 - %16 = load i64, ptr %15, align 8, !tbaa !104 - %17 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %13, i64 0, i64 %4, i64 %.021.i - store i64 %16, ptr %17, align 8, !tbaa !63 - %18 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 24 - %19 = load i64, ptr %18, align 8, !tbaa !107 - %20 = getelementptr inbounds nuw i8, ptr %17, i64 8 - store i64 %19, ptr %20, align 8, !tbaa !59 - %21 = getelementptr i8, ptr %.01922.i, i64 8 - %22 = add nuw nsw i64 %.021.i, 1 - %.019.i = load ptr, ptr %21, align 8, !tbaa !110 - %23 = icmp ne ptr %.019.i, null - %24 = icmp samesign ult i64 %.021.i, 2 - %25 = select i1 %23, i1 %24, i1 false - br i1 %25, label %14, label %ackm_fill_rx_ack_ranges.exit, !llvm.loop !111 - -ackm_fill_rx_ack_ranges.exit: ; preds = %14, %2 - %.0.lcssa.i = phi i64 [ 0, %2 ], [ %22, %14 ] - %26 = getelementptr inbounds nuw i8, ptr %0, i64 656 - %27 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %26, i64 0, i64 %4 - store ptr %27, ptr %5, align 8, !tbaa !56 - %28 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %.0.lcssa.i, ptr %28, align 8, !tbaa !62 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 2216 - %30 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %29, i64 0, i64 %4 - %31 = load i64, ptr %30, align 8 - %.not = icmp eq i64 %31, 0 - br i1 %.not, label %37, label %32 - -32: ; preds = %ackm_fill_rx_ack_ranges.exit - %33 = icmp ugt i64 %10, %31 - %34 = icmp eq i32 %1, 2 - %or.cond = and i1 %34, %33 - br i1 %or.cond, label %35, label %37 - -35: ; preds = %32 - %36 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %..i = sub nuw i64 %10, %31 - store i64 %..i, ptr %36, align 8, !tbaa !3 - br label %39 - -37: ; preds = %32, %ackm_fill_rx_ack_ranges.exit - %38 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 0, ptr %38, align 8, !tbaa !3 - br label %39 + %14 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %13, i64 0, i64 %4 + br label %15 -39: ; preds = %37, %35 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 2240 - %41 = getelementptr inbounds [3 x i64], ptr %40, i64 0, i64 %4 - %42 = load i64, ptr %41, align 8, !tbaa !3 - %43 = getelementptr inbounds nuw i8, ptr %5, i64 24 - store i64 %42, ptr %43, align 8, !tbaa !112 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 2264 - %45 = getelementptr inbounds [3 x i64], ptr %44, i64 0, i64 %4 - %46 = load i64, ptr %45, align 8, !tbaa !3 - %47 = getelementptr inbounds nuw i8, ptr %5, i64 32 - store i64 %46, ptr %47, align 8, !tbaa !113 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 2288 - %49 = getelementptr inbounds [3 x i64], ptr %48, i64 0, i64 %4 - %50 = load i64, ptr %49, align 8, !tbaa !3 - %51 = getelementptr inbounds nuw i8, ptr %5, i64 40 - store i64 %50, ptr %51, align 8, !tbaa !68 - %52 = getelementptr inbounds nuw i8, ptr %5, i64 48 - %53 = load i8, ptr %52, align 8 - %54 = or i8 %53, 1 - store i8 %54, ptr %52, align 8 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 2312 - %56 = getelementptr inbounds [3 x i32], ptr %55, i64 0, i64 %4 - store i32 0, ptr %56, align 4, !tbaa !92 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 464 - %58 = getelementptr inbounds [3 x i8], ptr %57, i64 0, i64 %4 - store i8 1, ptr %58, align 1, !tbaa !33 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 461 - %60 = getelementptr inbounds [3 x i8], ptr %59, i64 0, i64 %4 - store i8 0, ptr %60, align 1, !tbaa !33 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 2328 - %62 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %61, i64 0, i64 %4 - store i64 -1, ptr %62, align 8, !tbaa !3 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 2384 - %64 = load ptr, ptr %63, align 8, !tbaa !108 - %.not.i39 = icmp eq ptr %64, null +15: ; preds = %15, %.lr.ph.i + %.01922.i = phi ptr [ %.01920.i, %.lr.ph.i ], [ %.019.i, %15 ] + %.021.i = phi i64 [ 0, %.lr.ph.i ], [ %23, %15 ] + %16 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 16 + %17 = load i64, ptr %16, align 8, !tbaa !104 + %18 = getelementptr inbounds nuw [32 x %struct.ossl_quic_ack_range_st], ptr %14, i64 0, i64 %.021.i + store i64 %17, ptr %18, align 8, !tbaa !63 + %19 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 24 + %20 = load i64, ptr %19, align 8, !tbaa !107 + %21 = getelementptr inbounds nuw i8, ptr %18, i64 8 + store i64 %20, ptr %21, align 8, !tbaa !59 + %22 = getelementptr i8, ptr %.01922.i, i64 8 + %23 = add nuw nsw i64 %.021.i, 1 + %.019.i = load ptr, ptr %22, align 8, !tbaa !110 + %24 = icmp ne ptr %.019.i, null + %25 = icmp samesign ult i64 %.021.i, 2 + %26 = select i1 %24, i1 %25, i1 false + br i1 %26, label %15, label %ackm_fill_rx_ack_ranges.exit, !llvm.loop !111 + +ackm_fill_rx_ack_ranges.exit: ; preds = %15, %2 + %.0.lcssa.i = phi i64 [ 0, %2 ], [ %23, %15 ] + %27 = getelementptr inbounds nuw i8, ptr %0, i64 656 + %28 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %27, i64 0, i64 %4 + store ptr %28, ptr %5, align 8, !tbaa !56 + %29 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %.0.lcssa.i, ptr %29, align 8, !tbaa !62 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 2216 + %31 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %30, i64 0, i64 %4 + %32 = load i64, ptr %31, align 8 + %.not = icmp eq i64 %32, 0 + br i1 %.not, label %38, label %33 + +33: ; preds = %ackm_fill_rx_ack_ranges.exit + %34 = icmp ugt i64 %10, %32 + %35 = icmp eq i32 %1, 2 + %or.cond = and i1 %35, %34 + br i1 %or.cond, label %36, label %38 + +36: ; preds = %33 + %37 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %..i = sub nuw i64 %10, %32 + store i64 %..i, ptr %37, align 8, !tbaa !3 + br label %40 + +38: ; preds = %33, %ackm_fill_rx_ack_ranges.exit + %39 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store i64 0, ptr %39, align 8, !tbaa !3 + br label %40 + +40: ; preds = %38, %36 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 2240 + %42 = getelementptr inbounds [3 x i64], ptr %41, i64 0, i64 %4 + %43 = load i64, ptr %42, align 8, !tbaa !3 + %44 = getelementptr inbounds nuw i8, ptr %5, i64 24 + store i64 %43, ptr %44, align 8, !tbaa !112 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 2264 + %46 = getelementptr inbounds [3 x i64], ptr %45, i64 0, i64 %4 + %47 = load i64, ptr %46, align 8, !tbaa !3 + %48 = getelementptr inbounds nuw i8, ptr %5, i64 32 + store i64 %47, ptr %48, align 8, !tbaa !113 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 2288 + %50 = getelementptr inbounds [3 x i64], ptr %49, i64 0, i64 %4 + %51 = load i64, ptr %50, align 8, !tbaa !3 + %52 = getelementptr inbounds nuw i8, ptr %5, i64 40 + store i64 %51, ptr %52, align 8, !tbaa !68 + %53 = getelementptr inbounds nuw i8, ptr %5, i64 48 + %54 = load i8, ptr %53, align 8 + %55 = or i8 %54, 1 + store i8 %55, ptr %53, align 8 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 2312 + %57 = getelementptr inbounds [3 x i32], ptr %56, i64 0, i64 %4 + store i32 0, ptr %57, align 4, !tbaa !92 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 464 + %59 = getelementptr inbounds [3 x i8], ptr %58, i64 0, i64 %4 + store i8 1, ptr %59, align 1, !tbaa !33 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 461 + %61 = getelementptr inbounds [3 x i8], ptr %60, i64 0, i64 %4 + store i8 0, ptr %61, align 1, !tbaa !33 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 2328 + %63 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %62, i64 0, i64 %4 + store i64 -1, ptr %63, align 8, !tbaa !3 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 2384 + %65 = load ptr, ptr %64, align 8, !tbaa !108 + %.not.i39 = icmp eq ptr %65, null br i1 %.not.i39, label %ackm_set_flush_deadline.exit, label %ossl_ackm_get_ack_deadline.exit.i -ossl_ackm_get_ack_deadline.exit.i: ; preds = %39 - %65 = load i8, ptr %60, align 1, !tbaa !33 - %.not.i.i = icmp eq i8 %65, 0 +ossl_ackm_get_ack_deadline.exit.i: ; preds = %40 + %66 = load i8, ptr %61, align 1, !tbaa !33 + %.not.i.i = icmp eq i8 %66, 0 %spec.select.i = sext i1 %.not.i.i to i64 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 2392 - %67 = load ptr, ptr %66, align 8, !tbaa !109 - tail call void %64(i64 %spec.select.i, i32 noundef %1, ptr noundef %67) #12 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 2392 + %68 = load ptr, ptr %67, align 8, !tbaa !109 + tail call void %65(i64 %spec.select.i, i32 noundef %1, ptr noundef %68) #12 br label %ackm_set_flush_deadline.exit -ackm_set_flush_deadline.exit: ; preds = %39, %ossl_ackm_get_ack_deadline.exit.i +ackm_set_flush_deadline.exit: ; preds = %40, %ossl_ackm_get_ack_deadline.exit.i ret ptr %5 } diff --git a/bench/openssl/optimized/quic_cfq_test.ll b/bench/openssl/optimized/quic_cfq_test.ll index 94bb003665a..55d6409234a 100644 --- a/bench/openssl/optimized/quic_cfq_test.ll +++ b/bench/openssl/optimized/quic_cfq_test.ll @@ -127,75 +127,77 @@ define internal range(i32 0, 2) i32 @test_cfq() #0 { %.not66 = icmp eq i32 %37, 0 br i1 %.not66, label %.loopexit, label %34 -.preheader76: ; preds = %34, %44 - %indvars.iv = phi i64 [ %indvars.iv.next, %44 ], [ 0, %34 ] - br label %38 - -38: ; preds = %.preheader76, %42 - %.15588 = phi i64 [ 0, %.preheader76 ], [ %43, %42 ] - %39 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv, i64 %.15588 - %40 = load ptr, ptr %39, align 8, !tbaa !15 - %.not65 = icmp eq ptr %40, null - br i1 %.not65, label %42, label %41 - -41: ; preds = %38 - tail call void @ossl_quic_cfq_mark_lost(ptr noundef %1, ptr noundef nonnull %40, i32 noundef -1) #3 - br label %42 - -42: ; preds = %38, %41 - %43 = add nuw nsw i64 %.15588, 1 - %exitcond97.not = icmp eq i64 %43, 10 - br i1 %exitcond97.not, label %44, label %38, !llvm.loop !18 - -44: ; preds = %42 +.preheader76: ; preds = %34, %45 + %indvars.iv = phi i64 [ %indvars.iv.next, %45 ], [ 0, %34 ] + %38 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv + br label %39 + +39: ; preds = %.preheader76, %43 + %.15588 = phi i64 [ 0, %.preheader76 ], [ %44, %43 ] + %40 = getelementptr inbounds nuw [10 x ptr], ptr %38, i64 0, i64 %.15588 + %41 = load ptr, ptr %40, align 8, !tbaa !15 + %.not65 = icmp eq ptr %41, null + br i1 %.not65, label %43, label %42 + +42: ; preds = %39 + tail call void @ossl_quic_cfq_mark_lost(ptr noundef %1, ptr noundef nonnull %41, i32 noundef -1) #3 + br label %43 + +43: ; preds = %39, %42 + %44 = add nuw nsw i64 %.15588, 1 + %exitcond97.not = icmp eq i64 %44, 10 + br i1 %exitcond97.not, label %45, label %39, !llvm.loop !18 + +45: ; preds = %43 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond99.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond99.not, label %45, label %.preheader76, !llvm.loop !19 + br i1 %exitcond99.not, label %46, label %.preheader76, !llvm.loop !19 -45: ; preds = %44 - %46 = tail call fastcc i32 @check(ptr noundef %1) - %.not62 = icmp eq i32 %46, 0 +46: ; preds = %45 + %47 = tail call fastcc i32 @check(ptr noundef %1) + %.not62 = icmp eq i32 %47, 0 br i1 %.not62, label %.loopexit, label %.preheader74 -.preheader74: ; preds = %45, %53 - %indvars.iv101 = phi i64 [ %indvars.iv.next102, %53 ], [ 0, %45 ] - br label %47 +.preheader74: ; preds = %46, %55 + %indvars.iv101 = phi i64 [ %indvars.iv.next102, %55 ], [ 0, %46 ] + %48 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv101 + br label %49 -47: ; preds = %.preheader74, %51 - %.25690 = phi i64 [ 0, %.preheader74 ], [ %52, %51 ] - %48 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv101, i64 %.25690 - %49 = load ptr, ptr %48, align 8, !tbaa !15 - %.not64 = icmp eq ptr %49, null - br i1 %.not64, label %51, label %50 +49: ; preds = %.preheader74, %53 + %.25690 = phi i64 [ 0, %.preheader74 ], [ %54, %53 ] + %50 = getelementptr inbounds nuw [10 x ptr], ptr %48, i64 0, i64 %.25690 + %51 = load ptr, ptr %50, align 8, !tbaa !15 + %.not64 = icmp eq ptr %51, null + br i1 %.not64, label %53, label %52 -50: ; preds = %47 - tail call void @ossl_quic_cfq_release(ptr noundef %1, ptr noundef nonnull %49) #3 - br label %51 +52: ; preds = %49 + tail call void @ossl_quic_cfq_release(ptr noundef %1, ptr noundef nonnull %51) #3 + br label %53 -51: ; preds = %47, %50 - %52 = add nuw nsw i64 %.25690, 1 - %exitcond100.not = icmp eq i64 %52, 10 - br i1 %exitcond100.not, label %53, label %47, !llvm.loop !20 +53: ; preds = %49, %52 + %54 = add nuw nsw i64 %.25690, 1 + %exitcond100.not = icmp eq i64 %54, 10 + br i1 %exitcond100.not, label %55, label %49, !llvm.loop !20 -53: ; preds = %51 +55: ; preds = %53 %indvars.iv.next102 = add nuw nsw i64 %indvars.iv101, 1 %exitcond104.not = icmp eq i64 %indvars.iv.next102, 3 br i1 %exitcond104.not, label %.preheader, label %.preheader74, !llvm.loop !21 -54: ; preds = %.preheader - %55 = add nuw nsw i32 %.492, 1 - %exitcond105.not = icmp eq i32 %55, 3 +56: ; preds = %.preheader + %57 = add nuw nsw i32 %.492, 1 + %exitcond105.not = icmp eq i32 %57, 3 br i1 %exitcond105.not, label %.loopexit, label %.preheader, !llvm.loop !22 -.preheader: ; preds = %53, %54 - %.492 = phi i32 [ %55, %54 ], [ 0, %53 ] - %56 = tail call ptr @ossl_quic_cfq_get_priority_head(ptr noundef %1, i32 noundef %.492) #3 - %57 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 164, ptr noundef nonnull @.str.14, ptr noundef %56) #3 - %.not63 = icmp eq i32 %57, 0 - br i1 %.not63, label %.loopexit, label %54 +.preheader: ; preds = %55, %56 + %.492 = phi i32 [ %57, %56 ], [ 0, %55 ] + %58 = tail call ptr @ossl_quic_cfq_get_priority_head(ptr noundef %1, i32 noundef %.492) #3 + %59 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 164, ptr noundef nonnull @.str.14, ptr noundef %58) #3 + %.not63 = icmp eq i32 %59, 0 + br i1 %.not63, label %.loopexit, label %56 -.loopexit: ; preds = %.preheader81, %14, %17, %20, %23, %26, %.preheader78, %54, %.preheader, %45, %29, %0 - %.057 = phi i32 [ 0, %45 ], [ 0, %29 ], [ 0, %0 ], [ 1, %54 ], [ 0, %.preheader ], [ 0, %.preheader78 ], [ 0, %26 ], [ 0, %23 ], [ 0, %20 ], [ 0, %17 ], [ 0, %14 ], [ 0, %.preheader81 ] +.loopexit: ; preds = %.preheader81, %14, %17, %20, %23, %26, %.preheader78, %56, %.preheader, %46, %29, %0 + %.057 = phi i32 [ 0, %46 ], [ 0, %29 ], [ 0, %0 ], [ 1, %56 ], [ 0, %.preheader ], [ 0, %.preheader78 ], [ 0, %26 ], [ 0, %23 ], [ 0, %20 ], [ 0, %17 ], [ 0, %14 ], [ 0, %.preheader81 ] tail call void @ossl_quic_cfq_free(ptr noundef %1) #3 ret i32 %.057 } @@ -244,57 +246,61 @@ define internal fastcc range(i32 0, 2) i32 @check(ptr noundef %0) unnamed_addr # %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %2 ] %4 = trunc nuw nsw i64 %indvars.iv to i32 %5 = tail call ptr @ossl_quic_cfq_get_priority_head(ptr noundef %0, i32 noundef %4) #3 - %6 = getelementptr inbounds nuw [3 x [11 x i32]], ptr @expect, i64 0, i64 %indvars.iv, i64 0 + %6 = getelementptr inbounds nuw [3 x [11 x i32]], ptr @expect, i64 0, i64 %indvars.iv %7 = load i32, ptr %6, align 4, !tbaa !6 %8 = icmp eq i32 %7, -1 br i1 %8, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %24, %3 - %.021.lcssa = phi ptr [ %5, %3 ], [ %26, %24 ] - %9 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 78, ptr noundef nonnull @.str.15, ptr noundef %.021.lcssa) #3 - %.not26 = icmp eq i32 %9, 0 +.lr.ph: ; preds = %3 + %9 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv + br label %11 + +._crit_edge: ; preds = %26, %3 + %.021.lcssa = phi ptr [ %5, %3 ], [ %28, %26 ] + %10 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 78, ptr noundef nonnull @.str.15, ptr noundef %.021.lcssa) #3 + %.not26 = icmp eq i32 %10, 0 br i1 %.not26, label %.loopexit, label %2 -.lr.ph: ; preds = %3, %24 - %10 = phi i32 [ %28, %24 ], [ %7, %3 ] - %.02030 = phi i64 [ %25, %24 ], [ 0, %3 ] - %.02129 = phi ptr [ %26, %24 ], [ %5, %3 ] - %11 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv, i64 %.02030 - store ptr %.02129, ptr %11, align 8, !tbaa !15 - %12 = tail call i32 @test_ptr(ptr noundef nonnull @.str.1, i32 noundef 86, ptr noundef nonnull @.str.15, ptr noundef %.02129) #3 - %.not = icmp eq i32 %12, 0 - br i1 %.not, label %.loopexit, label %13 - -13: ; preds = %.lr.ph - %14 = tail call ptr @ossl_quic_cfq_item_get_encoded(ptr noundef %.02129) #3 - %15 = zext i32 %10 to i64 - %16 = getelementptr inbounds nuw i8, ptr @ref_buf, i64 %15 - %17 = tail call i32 @test_ptr_eq(ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef %14, ptr noundef nonnull %16) #3 - %.not23 = icmp eq i32 %17, 0 - br i1 %.not23, label %.loopexit, label %18 - -18: ; preds = %13 - %19 = tail call i32 @ossl_quic_cfq_item_get_pn_space(ptr noundef %.02129) #3 - %20 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 89, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, i32 noundef %19, i32 noundef %4) #3 - %.not24 = icmp eq i32 %20, 0 - br i1 %.not24, label %.loopexit, label %21 - -21: ; preds = %18 - %22 = tail call i32 @ossl_quic_cfq_item_get_state(ptr noundef %.02129) #3 - %23 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef %22, i32 noundef 0) #3 - %.not25 = icmp eq i32 %23, 0 - br i1 %.not25, label %.loopexit, label %24 - -24: ; preds = %21 - %25 = add i64 %.02030, 1 - %26 = tail call ptr @ossl_quic_cfq_item_get_priority_next(ptr noundef %.02129, i32 noundef %4) #3 - %27 = getelementptr inbounds nuw [3 x [11 x i32]], ptr @expect, i64 0, i64 %indvars.iv, i64 %25 - %28 = load i32, ptr %27, align 4, !tbaa !6 - %29 = icmp eq i32 %28, -1 - br i1 %29, label %._crit_edge, label %.lr.ph - -.loopexit: ; preds = %2, %._crit_edge, %.lr.ph, %13, %18, %21 - %.022 = phi i32 [ 0, %21 ], [ 0, %18 ], [ 0, %13 ], [ 0, %.lr.ph ], [ 1, %2 ], [ 0, %._crit_edge ] +11: ; preds = %.lr.ph, %26 + %12 = phi i32 [ %7, %.lr.ph ], [ %30, %26 ] + %.02030 = phi i64 [ 0, %.lr.ph ], [ %27, %26 ] + %.02129 = phi ptr [ %5, %.lr.ph ], [ %28, %26 ] + %13 = getelementptr inbounds nuw [10 x ptr], ptr %9, i64 0, i64 %.02030 + store ptr %.02129, ptr %13, align 8, !tbaa !15 + %14 = tail call i32 @test_ptr(ptr noundef nonnull @.str.1, i32 noundef 86, ptr noundef nonnull @.str.15, ptr noundef %.02129) #3 + %.not = icmp eq i32 %14, 0 + br i1 %.not, label %.loopexit, label %15 + +15: ; preds = %11 + %16 = tail call ptr @ossl_quic_cfq_item_get_encoded(ptr noundef %.02129) #3 + %17 = zext i32 %12 to i64 + %18 = getelementptr inbounds nuw i8, ptr @ref_buf, i64 %17 + %19 = tail call i32 @test_ptr_eq(ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef %16, ptr noundef nonnull %18) #3 + %.not23 = icmp eq i32 %19, 0 + br i1 %.not23, label %.loopexit, label %20 + +20: ; preds = %15 + %21 = tail call i32 @ossl_quic_cfq_item_get_pn_space(ptr noundef %.02129) #3 + %22 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 89, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, i32 noundef %21, i32 noundef %4) #3 + %.not24 = icmp eq i32 %22, 0 + br i1 %.not24, label %.loopexit, label %23 + +23: ; preds = %20 + %24 = tail call i32 @ossl_quic_cfq_item_get_state(ptr noundef %.02129) #3 + %25 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef %24, i32 noundef 0) #3 + %.not25 = icmp eq i32 %25, 0 + br i1 %.not25, label %.loopexit, label %26 + +26: ; preds = %23 + %27 = add i64 %.02030, 1 + %28 = tail call ptr @ossl_quic_cfq_item_get_priority_next(ptr noundef %.02129, i32 noundef %4) #3 + %29 = getelementptr inbounds nuw [11 x i32], ptr %6, i64 0, i64 %27 + %30 = load i32, ptr %29, align 4, !tbaa !6 + %31 = icmp eq i32 %30, -1 + br i1 %31, label %._crit_edge, label %11 + +.loopexit: ; preds = %2, %._crit_edge, %11, %15, %20, %23 + %.022 = phi i32 [ 0, %23 ], [ 0, %20 ], [ 0, %15 ], [ 0, %11 ], [ 1, %2 ], [ 0, %._crit_edge ] ret i32 %.022 } diff --git a/bench/openusd/optimized/av1_dx_iface.ll b/bench/openusd/optimized/av1_dx_iface.ll index 14aabb04d3b..b39aace96d2 100644 --- a/bench/openusd/optimized/av1_dx_iface.ll +++ b/bench/openusd/optimized/av1_dx_iface.ll @@ -3034,21 +3034,19 @@ define internal range(i32 0, 9) i32 @ctrl_get_tile_data(ptr noundef readonly cap %26 = getelementptr inbounds nuw i8, ptr %24, i64 431872 %27 = load i32, ptr %26, align 32 %28 = sext i32 %27 to i64 - %29 = getelementptr inbounds nuw i8, ptr %24, i64 431876 - %30 = load i32, ptr %29, align 4 - %31 = sext i32 %30 to i64 - %.idx = shl nsw i64 %28, 10 - %.idx18 = shl nsw i64 %31, 4 - %32 = getelementptr i8, ptr %25, i64 %.idx - %33 = getelementptr i8, ptr %32, i64 %.idx18 - %34 = getelementptr i8, ptr %33, i64 8 - %35 = load i64, ptr %34, align 8 - store i64 %35, ptr %17, align 8 - %36 = load i32, ptr %26, align 32 - %37 = sext i32 %36 to i64 - %38 = load i32, ptr %29, align 4 + %29 = getelementptr inbounds [64 x [64 x %struct.TileBufferDec]], ptr %25, i64 0, i64 %28 + %30 = getelementptr inbounds nuw i8, ptr %24, i64 431876 + %31 = load i32, ptr %30, align 4 + %32 = sext i32 %31 to i64 + %33 = getelementptr inbounds [64 x %struct.TileBufferDec], ptr %29, i64 0, i64 %32, i32 1 + %34 = load i64, ptr %33, align 8 + store i64 %34, ptr %17, align 8 + %35 = load i32, ptr %26, align 32 + %36 = sext i32 %35 to i64 + %37 = getelementptr inbounds [64 x [64 x %struct.TileBufferDec]], ptr %25, i64 0, i64 %36 + %38 = load i32, ptr %30, align 4 %39 = sext i32 %38 to i64 - %40 = getelementptr inbounds [64 x [64 x %struct.TileBufferDec]], ptr %25, i64 0, i64 %37, i64 %39 + %40 = getelementptr inbounds [64 x %struct.TileBufferDec], ptr %37, i64 0, i64 %39 %41 = load ptr, ptr %40, align 16 %42 = getelementptr inbounds nuw i8, ptr %17, i64 8 store ptr %41, ptr %42, align 8 diff --git a/bench/openusd/optimized/blockd.ll b/bench/openusd/optimized/blockd.ll index 691f9e7c29c..6381520a847 100644 --- a/bench/openusd/optimized/blockd.ll +++ b/bench/openusd/optimized/blockd.ll @@ -164,39 +164,41 @@ define hidden void @av1_reset_entropy_context(ptr noundef readonly captures(none .lr.ph: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %0, i64 16 %11 = zext i8 %1 to i64 - %12 = add nuw nsw i32 %9, 1 - %wide.trip.count = zext nneg i32 %12 to i64 - br label %13 - -13: ; preds = %.lr.ph, %13 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %13 ] - %14 = getelementptr inbounds nuw [3 x %struct.macroblockd_plane], ptr %10, i64 0, i64 %indvars.iv - %15 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %16 = load i32, ptr %15, align 4 - %17 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %18 = load i32, ptr %17, align 8 - %19 = sext i32 %16 to i64 - %20 = sext i32 %18 to i64 - %21 = getelementptr inbounds [22 x [2 x [2 x i8]]], ptr @ss_size_lookup, i64 0, i64 %11, i64 %19, i64 %20 - %22 = load i8, ptr %21, align 1 - %23 = zext i8 %22 to i64 - %24 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_wide, i64 0, i64 %23 - %25 = load i8, ptr %24, align 1 - %26 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_high, i64 0, i64 %23 + %12 = getelementptr inbounds nuw [22 x [2 x [2 x i8]]], ptr @ss_size_lookup, i64 0, i64 %11 + %13 = add nuw nsw i32 %9, 1 + %wide.trip.count = zext nneg i32 %13 to i64 + br label %14 + +14: ; preds = %.lr.ph, %14 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %14 ] + %15 = getelementptr inbounds nuw [3 x %struct.macroblockd_plane], ptr %10, i64 0, i64 %indvars.iv + %16 = getelementptr inbounds nuw i8, ptr %15, i64 4 + %17 = load i32, ptr %16, align 4 + %18 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %19 = load i32, ptr %18, align 8 + %20 = sext i32 %17 to i64 + %21 = getelementptr inbounds [2 x [2 x i8]], ptr %12, i64 0, i64 %20 + %22 = sext i32 %19 to i64 + %23 = getelementptr inbounds [2 x i8], ptr %21, i64 0, i64 %22 + %24 = load i8, ptr %23, align 1 + %25 = zext i8 %24 to i64 + %26 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_wide, i64 0, i64 %25 %27 = load i8, ptr %26, align 1 - %28 = getelementptr inbounds nuw i8, ptr %14, i64 112 - %29 = load ptr, ptr %28, align 8 - %30 = zext i8 %25 to i64 - tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 0, i64 %30, i1 false) - %31 = getelementptr inbounds nuw i8, ptr %14, i64 120 - %32 = load ptr, ptr %31, align 8 - %33 = zext i8 %27 to i64 - tail call void @llvm.memset.p0.i64(ptr align 1 %32, i8 0, i64 %33, i1 false) + %28 = getelementptr inbounds nuw [22 x i8], ptr @mi_size_high, i64 0, i64 %25 + %29 = load i8, ptr %28, align 1 + %30 = getelementptr inbounds nuw i8, ptr %15, i64 112 + %31 = load ptr, ptr %30, align 8 + %32 = zext i8 %27 to i64 + tail call void @llvm.memset.p0.i64(ptr align 1 %31, i8 0, i64 %32, i1 false) + %33 = getelementptr inbounds nuw i8, ptr %15, i64 120 + %34 = load ptr, ptr %33, align 8 + %35 = zext i8 %29 to i64 + tail call void @llvm.memset.p0.i64(ptr align 1 %34, i8 0, i64 %35, i1 false) %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 %13, !llvm.loop !4 + br i1 %exitcond.not, label %._crit_edge, label %14, !llvm.loop !4 -._crit_edge: ; preds = %13, %3 +._crit_edge: ; preds = %14, %3 ret void } diff --git a/bench/openusd/optimized/matrix2d.ll b/bench/openusd/optimized/matrix2d.ll index 87035457260..6216bf522e1 100644 --- a/bench/openusd/optimized/matrix2d.ll +++ b/bench/openusd/optimized/matrix2d.ll @@ -111,10 +111,12 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ %8 = ptrtoint ptr %6 to i64 %9 = sub i64 %7, %8 %10 = sdiv exact i64 %9, 24 + %.01618.sroa.gep20 = getelementptr inbounds nuw i8, ptr %3, i64 16 br label %11 11: ; preds = %2, %.critedge2 %12 = phi i1 [ true, %2 ], [ false, %.critedge2 ] + %.01618.sroa.phi = phi ptr [ %3, %2 ], [ %.01618.sroa.gep20, %.critedge2 ] %.01618 = phi i64 [ 0, %2 ], [ 1, %.critedge2 ] %exitcond19.not = icmp eq i64 %.01618, %10 br i1 %exitcond19.not, label %.critedge, label %.preheader @@ -139,7 +141,7 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ 23: ; preds = %21 %24 = getelementptr inbounds nuw double, ptr %16, i64 %.017 %25 = load double, ptr %24, align 8 - %26 = getelementptr inbounds nuw [2 x [2 x double]], ptr %3, i64 0, i64 %.01618, i64 %.017 + %26 = getelementptr inbounds nuw [2 x double], ptr %.01618.sroa.phi, i64 0, i64 %.017 store double %25, ptr %26, align 8 br i1 %22, label %21, label %.critedge2, !llvm.loop !4 @@ -178,10 +180,12 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ %8 = ptrtoint ptr %6 to i64 %9 = sub i64 %7, %8 %10 = sdiv exact i64 %9, 24 + %.01618.sroa.gep20 = getelementptr inbounds nuw i8, ptr %3, i64 16 br label %11 11: ; preds = %2, %.critedge2 %12 = phi i1 [ true, %2 ], [ false, %.critedge2 ] + %.01618.sroa.phi = phi ptr [ %3, %2 ], [ %.01618.sroa.gep20, %.critedge2 ] %.01618 = phi i64 [ 0, %2 ], [ 1, %.critedge2 ] %exitcond19.not = icmp eq i64 %.01618, %10 br i1 %exitcond19.not, label %.critedge, label %.preheader @@ -207,7 +211,7 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10GfMatrix2dC2ERKSt6vectorIS1_ %24 = getelementptr inbounds nuw float, ptr %16, i64 %.017 %25 = load float, ptr %24, align 4 %26 = fpext float %25 to double - %27 = getelementptr inbounds nuw [2 x [2 x double]], ptr %3, i64 0, i64 %.01618, i64 %.017 + %27 = getelementptr inbounds nuw [2 x double], ptr %.01618.sroa.phi, i64 0, i64 %.017 store double %26, ptr %27, align 8 br i1 %22, label %21, label %.critedge2, !llvm.loop !7 diff --git a/bench/openusd/optimized/seg_common.ll b/bench/openusd/optimized/seg_common.ll index dcae279b1c2..1ae02cc71ab 100644 --- a/bench/openusd/optimized/seg_common.ll +++ b/bench/openusd/optimized/seg_common.ll @@ -98,9 +98,10 @@ define hidden void @av1_set_segdata(ptr noundef writeonly captures(none) %0, i32 %5 = trunc i32 %3 to i16 %6 = getelementptr inbounds nuw i8, ptr %0, i64 4 %7 = sext i32 %1 to i64 - %8 = zext i8 %2 to i64 - %9 = getelementptr inbounds [8 x [8 x i16]], ptr %6, i64 0, i64 %7, i64 %8 - store i16 %5, ptr %9, align 2 + %8 = getelementptr inbounds [8 x [8 x i16]], ptr %6, i64 0, i64 %7 + %9 = zext i8 %2 to i64 + %10 = getelementptr inbounds nuw [8 x i16], ptr %8, i64 0, i64 %9 + store i16 %5, ptr %10, align 2 ret void } diff --git a/bench/ozz-animation/optimized/skinning_job.ll b/bench/ozz-animation/optimized/skinning_job.ll index f077bc25ec3..84940928329 100644 --- a/bench/ozz-animation/optimized/skinning_job.ll +++ b/bench/ozz-animation/optimized/skinning_job.ll @@ -7856,7 +7856,7 @@ define dso_local noundef zeroext i1 @_ZNK3ozz8geometry11SkinningJob3RunEv(ptr no %3 = load i32, ptr %0, align 8 %4 = icmp ne i32 %3, 0 %or.cond.not = select i1 %2, i1 %4, i1 false - br i1 %or.cond.not, label %5, label %25 + br i1 %or.cond.not, label %5, label %27 5: ; preds = %1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -7877,12 +7877,14 @@ define dso_local noundef zeroext i1 @_ZNK3ozz8geometry11SkinningJob3RunEv(ptr no %20 = icmp ne i64 %19, 0 %21 = zext i1 %20 to i64 %22 = add nuw nsw i64 %21, %17 - %23 = getelementptr inbounds nuw [2 x [5 x [3 x ptr]]], ptr @_ZN3ozz8geometryL12kSkinningFctE, i64 0, i64 %9, i64 %13, i64 %22 - %24 = load ptr, ptr %23, align 8, !tbaa !578 - tail call void %24(ptr noundef nonnull align 8 dereferenceable(232) %0) - br label %25 - -25: ; preds = %1, %5 + %23 = getelementptr inbounds nuw [2 x [5 x [3 x ptr]]], ptr @_ZN3ozz8geometryL12kSkinningFctE, i64 0, i64 %9 + %24 = getelementptr inbounds nuw [5 x [3 x ptr]], ptr %23, i64 0, i64 %13 + %25 = getelementptr inbounds nuw [3 x ptr], ptr %24, i64 0, i64 %22 + %26 = load ptr, ptr %25, align 8, !tbaa !578 + tail call void %26(ptr noundef nonnull align 8 dereferenceable(232) %0) + br label %27 + +27: ; preds = %1, %5 ret i1 %2 } diff --git a/bench/pbrt-v4/optimized/color.ll b/bench/pbrt-v4/optimized/color.ll index 38b628a9d07..f2c5478c15b 100644 --- a/bench/pbrt-v4/optimized/color.ll +++ b/bench/pbrt-v4/optimized/color.ll @@ -236,7 +236,7 @@ define dso_local { <2 x float>, float } @_ZNK4pbrt18RGBToSpectrumTableclENS_3RGB %10 = fmul float %.sroa.072.0.vec.extract, %9 %11 = tail call noundef float @sqrtf(float noundef %10) #30, !tbaa !21 %12 = fdiv float %8, %11 - br label %110 + br label %125 13: ; preds = %3 %14 = fcmp ogt float %.sroa.072.0.vec.extract, %.sroa.072.4.vec.extract @@ -311,77 +311,92 @@ _ZN4pbrt3RGBixEi.exit19: ; preds = %15, %17, %19 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %4, i8 0, i64 12, i1 false), !tbaa !26 %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 %54 = load ptr, ptr %53, align 8, !tbaa !30 - %55 = sext i32 %.sroa.speculated to i64 - %56 = sext i32 %.sroa.speculated67 to i64 - %57 = add nsw i32 %.sroa.speculated67, 1 - %58 = sext i32 %57 to i64 - %59 = fsub float 1.000000e+00, %41 - %60 = add nsw i32 %.sroa.speculated, 1 - %61 = sext i32 %60 to i64 - %62 = fsub float 1.000000e+00, %43 - %63 = add nuw nsw i64 %.0.i.i, 1 - %64 = fsub float 1.000000e+00, %52 - br label %71 - -65: ; preds = %71 - %66 = load float, ptr %4, align 4, !tbaa !26 - %67 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %68 = load float, ptr %67, align 4, !tbaa !26 - %69 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %70 = load float, ptr %69, align 4, !tbaa !26 - %.sroa.0121.0.vec.insert124 = insertelement <2 x float> poison, float %66, i64 0 - %.sroa.0121.4.vec.insert126 = insertelement <2 x float> %.sroa.0121.0.vec.insert124, float %68, i64 1 + %55 = getelementptr inbounds nuw [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20 + %56 = getelementptr inbounds nuw [64 x [64 x [64 x [3 x float]]]], ptr %55, i64 0, i64 %.0.i.i + %57 = sext i32 %.sroa.speculated to i64 + %58 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %56, i64 0, i64 %57 + %59 = sext i32 %.sroa.speculated67 to i64 + %60 = getelementptr inbounds [64 x [3 x float]], ptr %58, i64 0, i64 %59 + %61 = add nsw i32 %.sroa.speculated67, 1 + %62 = sext i32 %61 to i64 + %63 = getelementptr inbounds [64 x [3 x float]], ptr %58, i64 0, i64 %62 + %64 = fsub float 1.000000e+00, %41 + %65 = add nsw i32 %.sroa.speculated, 1 + %66 = sext i32 %65 to i64 + %67 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %56, i64 0, i64 %66 + %68 = getelementptr inbounds [64 x [3 x float]], ptr %67, i64 0, i64 %59 + %69 = getelementptr inbounds [64 x [3 x float]], ptr %67, i64 0, i64 %62 + %70 = fsub float 1.000000e+00, %43 + %71 = add nuw nsw i64 %.0.i.i, 1 + %72 = getelementptr inbounds nuw [64 x [64 x [64 x [3 x float]]]], ptr %55, i64 0, i64 %71 + %73 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %72, i64 0, i64 %57 + %74 = getelementptr inbounds [64 x [3 x float]], ptr %73, i64 0, i64 %59 + %75 = getelementptr inbounds [64 x [3 x float]], ptr %73, i64 0, i64 %62 + %76 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %72, i64 0, i64 %66 + %77 = getelementptr inbounds [64 x [3 x float]], ptr %76, i64 0, i64 %59 + %78 = getelementptr inbounds [64 x [3 x float]], ptr %76, i64 0, i64 %62 + %79 = fsub float 1.000000e+00, %52 + br label %86 + +80: ; preds = %86 + %81 = load float, ptr %4, align 4, !tbaa !26 + %82 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %83 = load float, ptr %82, align 4, !tbaa !26 + %84 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %85 = load float, ptr %84, align 4, !tbaa !26 + %.sroa.0121.0.vec.insert124 = insertelement <2 x float> poison, float %81, i64 0 + %.sroa.0121.4.vec.insert126 = insertelement <2 x float> %.sroa.0121.0.vec.insert124, float %83, i64 1 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #30 - br label %110 - -71: ; preds = %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit", %71 - %indvars.iv = phi i64 [ 0, %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit" ], [ %indvars.iv.next, %71 ] - %72 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %55, i64 %56, i64 %indvars.iv - %73 = load float, ptr %72, align 4, !tbaa !26 - %74 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %55, i64 %58, i64 %indvars.iv - %75 = load float, ptr %74, align 4, !tbaa !26 - %76 = fmul float %59, %73 - %77 = fmul float %41, %75 - %78 = fadd float %76, %77 - %79 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %61, i64 %56, i64 %indvars.iv - %80 = load float, ptr %79, align 4, !tbaa !26 - %81 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %.0.i.i, i64 %61, i64 %58, i64 %indvars.iv - %82 = load float, ptr %81, align 4, !tbaa !26 - %83 = fmul float %59, %80 - %84 = fmul float %41, %82 - %85 = fadd float %83, %84 - %86 = fmul float %62, %78 - %87 = fmul float %43, %85 - %88 = fadd float %86, %87 - %89 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %55, i64 %56, i64 %indvars.iv + br label %125 + +86: ; preds = %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit", %86 + %indvars.iv = phi i64 [ 0, %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit" ], [ %indvars.iv.next, %86 ] + %87 = getelementptr inbounds nuw [3 x float], ptr %60, i64 0, i64 %indvars.iv + %88 = load float, ptr %87, align 4, !tbaa !26 + %89 = getelementptr inbounds nuw [3 x float], ptr %63, i64 0, i64 %indvars.iv %90 = load float, ptr %89, align 4, !tbaa !26 - %91 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %55, i64 %58, i64 %indvars.iv - %92 = load float, ptr %91, align 4, !tbaa !26 - %93 = fmul float %59, %90 - %94 = fmul float %41, %92 - %95 = fadd float %93, %94 - %96 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %61, i64 %56, i64 %indvars.iv + %91 = fmul float %64, %88 + %92 = fmul float %41, %90 + %93 = fadd float %91, %92 + %94 = getelementptr inbounds nuw [3 x float], ptr %68, i64 0, i64 %indvars.iv + %95 = load float, ptr %94, align 4, !tbaa !26 + %96 = getelementptr inbounds nuw [3 x float], ptr %69, i64 0, i64 %indvars.iv %97 = load float, ptr %96, align 4, !tbaa !26 - %98 = getelementptr inbounds [3 x [64 x [64 x [64 x [3 x float]]]]], ptr %54, i64 0, i64 %20, i64 %63, i64 %61, i64 %58, i64 %indvars.iv - %99 = load float, ptr %98, align 4, !tbaa !26 - %100 = fmul float %59, %97 - %101 = fmul float %41, %99 - %102 = fadd float %100, %101 - %103 = fmul float %62, %95 - %104 = fmul float %43, %102 - %105 = fadd float %103, %104 - %106 = fmul float %64, %88 - %107 = fmul float %52, %105 - %108 = fadd float %106, %107 - %109 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv - store float %108, ptr %109, align 4, !tbaa !26 + %98 = fmul float %64, %95 + %99 = fmul float %41, %97 + %100 = fadd float %98, %99 + %101 = fmul float %70, %93 + %102 = fmul float %43, %100 + %103 = fadd float %101, %102 + %104 = getelementptr inbounds nuw [3 x float], ptr %74, i64 0, i64 %indvars.iv + %105 = load float, ptr %104, align 4, !tbaa !26 + %106 = getelementptr inbounds nuw [3 x float], ptr %75, i64 0, i64 %indvars.iv + %107 = load float, ptr %106, align 4, !tbaa !26 + %108 = fmul float %64, %105 + %109 = fmul float %41, %107 + %110 = fadd float %108, %109 + %111 = getelementptr inbounds nuw [3 x float], ptr %77, i64 0, i64 %indvars.iv + %112 = load float, ptr %111, align 4, !tbaa !26 + %113 = getelementptr inbounds nuw [3 x float], ptr %78, i64 0, i64 %indvars.iv + %114 = load float, ptr %113, align 4, !tbaa !26 + %115 = fmul float %64, %112 + %116 = fmul float %41, %114 + %117 = fadd float %115, %116 + %118 = fmul float %70, %110 + %119 = fmul float %43, %117 + %120 = fadd float %118, %119 + %121 = fmul float %79, %103 + %122 = fmul float %52, %120 + %123 = fadd float %121, %122 + %124 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv + store float %123, ptr %124, align 4, !tbaa !26 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %65, label %71, !llvm.loop !31 + br i1 %exitcond.not, label %80, label %86, !llvm.loop !31 -110: ; preds = %65, %7 - %.sroa.0121.0 = phi <2 x float> [ zeroinitializer, %7 ], [ %.sroa.0121.4.vec.insert126, %65 ] - %.sroa.5.0 = phi float [ %12, %7 ], [ %70, %65 ] +125: ; preds = %80, %7 + %.sroa.0121.0 = phi <2 x float> [ zeroinitializer, %7 ], [ %.sroa.0121.4.vec.insert126, %80 ] + %.sroa.5.0 = phi float [ %12, %7 ], [ %85, %80 ] %.fca.0.insert = insertvalue { <2 x float>, float } poison, <2 x float> %.sroa.0121.0, 0 %.fca.1.insert = insertvalue { <2 x float>, float } %.fca.0.insert, float %.sroa.5.0, 1 ret { <2 x float>, float } %.fca.1.insert diff --git a/bench/pbrt-v4/optimized/vecmath.ll b/bench/pbrt-v4/optimized/vecmath.ll index b96222eae6a..aa05cef4be4 100644 --- a/bench/pbrt-v4/optimized/vecmath.ll +++ b/bench/pbrt-v4/optimized/vecmath.ll @@ -783,137 +783,139 @@ define linkonce_odr dso_local void @_ZN4pbrt6RotateEffNS_7Vector3IfEE(ptr dead_o call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #22 br label %.preheader.i -.preheader.i: ; preds = %8, %5 - %indvars.iv12.i = phi i64 [ 0, %5 ], [ %indvars.iv.next13.i, %8 ] - br label %9 +.preheader.i: ; preds = %9, %5 + %indvars.iv12.i = phi i64 [ 0, %5 ], [ %indvars.iv.next13.i, %9 ] + %8 = getelementptr inbounds nuw [4 x [4 x float]], ptr %6, i64 0, i64 %indvars.iv12.i + br label %10 -8: ; preds = %9 +9: ; preds = %10 %indvars.iv.next13.i = add nuw nsw i64 %indvars.iv12.i, 1 %exitcond15.not.i = icmp eq i64 %indvars.iv.next13.i, 4 br i1 %exitcond15.not.i, label %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit, label %.preheader.i, !llvm.loop !58 -9: ; preds = %9, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %9 ] - %10 = icmp eq i64 %indvars.iv12.i, %indvars.iv.i - %11 = uitofp i1 %10 to float - %12 = getelementptr inbounds nuw [4 x [4 x float]], ptr %6, i64 0, i64 %indvars.iv12.i, i64 %indvars.iv.i - store float %11, ptr %12, align 4, !tbaa !4 +10: ; preds = %10, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %10 ] + %11 = icmp eq i64 %indvars.iv12.i, %indvars.iv.i + %12 = uitofp i1 %11 to float + %13 = getelementptr inbounds nuw [4 x float], ptr %8, i64 0, i64 %indvars.iv.i + store float %12, ptr %13, align 4, !tbaa !4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 4 - br i1 %exitcond.not.i, label %8, label %9, !llvm.loop !60 + br i1 %exitcond.not.i, label %9, label %10, !llvm.loop !60 -_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit: ; preds = %8 +_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit: ; preds = %9 %.sroa.01.0.vec.extract.i.i.i = extractelement <2 x float> %3, i64 0 - %13 = fmul <2 x float> %3, %3 - %14 = extractelement <2 x float> %13, i64 0 + %14 = fmul <2 x float> %3, %3 + %15 = extractelement <2 x float> %14, i64 0 %.sroa.01.4.vec.extract.i.i.i = extractelement <2 x float> %3, i64 1 - %15 = fmul float %.sroa.01.4.vec.extract.i.i.i, %.sroa.01.4.vec.extract.i.i.i - %16 = fadd float %14, %15 - %17 = fmul float %4, %4 - %18 = fadd float %17, %16 - %sqrt.i.i = tail call noundef float @llvm.sqrt.f32(float %18) - %19 = fdiv float %.sroa.01.0.vec.extract.i.i.i, %sqrt.i.i - %20 = fdiv float %.sroa.01.4.vec.extract.i.i.i, %sqrt.i.i - %21 = fdiv float %4, %sqrt.i.i - %22 = fmul float %19, %19 - %23 = fsub float 1.000000e+00, %22 - %24 = fmul float %2, %23 - %25 = fadd float %22, %24 - store float %25, ptr %6, align 4, !tbaa !4 - %26 = fmul float %19, %20 - %27 = fsub float 1.000000e+00, %2 - %28 = fmul float %27, %26 - %29 = fmul float %1, %21 - %30 = fsub float %28, %29 - %31 = getelementptr inbounds nuw i8, ptr %6, i64 4 - store float %30, ptr %31, align 4, !tbaa !4 - %32 = fmul float %19, %21 - %33 = fmul float %27, %32 - %34 = fmul float %1, %20 - %35 = fadd float %34, %33 - %36 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store float %35, ptr %36, align 4, !tbaa !4 - %37 = getelementptr inbounds nuw i8, ptr %6, i64 12 - store float 0.000000e+00, ptr %37, align 4, !tbaa !4 - %38 = fadd float %29, %28 - %39 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store float %38, ptr %39, align 4, !tbaa !4 - %40 = fmul float %20, %20 - %41 = fsub float 1.000000e+00, %40 - %42 = fmul float %2, %41 - %43 = fadd float %40, %42 - %44 = getelementptr inbounds nuw i8, ptr %6, i64 20 - store float %43, ptr %44, align 4, !tbaa !4 - %45 = fmul float %20, %21 - %46 = fmul float %27, %45 - %47 = fmul float %1, %19 - %48 = fsub float %46, %47 - %49 = getelementptr inbounds nuw i8, ptr %6, i64 24 - store float %48, ptr %49, align 4, !tbaa !4 - %50 = getelementptr inbounds nuw i8, ptr %6, i64 28 - store float 0.000000e+00, ptr %50, align 4, !tbaa !4 - %51 = fsub float %33, %34 - %52 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store float %51, ptr %52, align 4, !tbaa !4 - %53 = fadd float %47, %46 - %54 = getelementptr inbounds nuw i8, ptr %6, i64 36 - store float %53, ptr %54, align 4, !tbaa !4 - %55 = fmul float %21, %21 - %56 = fsub float 1.000000e+00, %55 - %57 = fmul float %2, %56 - %58 = fadd float %55, %57 - %59 = getelementptr inbounds nuw i8, ptr %6, i64 40 - store float %58, ptr %59, align 4, !tbaa !4 - %60 = getelementptr inbounds nuw i8, ptr %6, i64 44 - store float 0.000000e+00, ptr %60, align 4, !tbaa !4 + %16 = fmul float %.sroa.01.4.vec.extract.i.i.i, %.sroa.01.4.vec.extract.i.i.i + %17 = fadd float %15, %16 + %18 = fmul float %4, %4 + %19 = fadd float %18, %17 + %sqrt.i.i = tail call noundef float @llvm.sqrt.f32(float %19) + %20 = fdiv float %.sroa.01.0.vec.extract.i.i.i, %sqrt.i.i + %21 = fdiv float %.sroa.01.4.vec.extract.i.i.i, %sqrt.i.i + %22 = fdiv float %4, %sqrt.i.i + %23 = fmul float %20, %20 + %24 = fsub float 1.000000e+00, %23 + %25 = fmul float %2, %24 + %26 = fadd float %23, %25 + store float %26, ptr %6, align 4, !tbaa !4 + %27 = fmul float %20, %21 + %28 = fsub float 1.000000e+00, %2 + %29 = fmul float %28, %27 + %30 = fmul float %1, %22 + %31 = fsub float %29, %30 + %32 = getelementptr inbounds nuw i8, ptr %6, i64 4 + store float %31, ptr %32, align 4, !tbaa !4 + %33 = fmul float %20, %22 + %34 = fmul float %28, %33 + %35 = fmul float %1, %21 + %36 = fadd float %35, %34 + %37 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store float %36, ptr %37, align 4, !tbaa !4 + %38 = getelementptr inbounds nuw i8, ptr %6, i64 12 + store float 0.000000e+00, ptr %38, align 4, !tbaa !4 + %39 = fadd float %30, %29 + %40 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store float %39, ptr %40, align 4, !tbaa !4 + %41 = fmul float %21, %21 + %42 = fsub float 1.000000e+00, %41 + %43 = fmul float %2, %42 + %44 = fadd float %41, %43 + %45 = getelementptr inbounds nuw i8, ptr %6, i64 20 + store float %44, ptr %45, align 4, !tbaa !4 + %46 = fmul float %21, %22 + %47 = fmul float %28, %46 + %48 = fmul float %1, %20 + %49 = fsub float %47, %48 + %50 = getelementptr inbounds nuw i8, ptr %6, i64 24 + store float %49, ptr %50, align 4, !tbaa !4 + %51 = getelementptr inbounds nuw i8, ptr %6, i64 28 + store float 0.000000e+00, ptr %51, align 4, !tbaa !4 + %52 = fsub float %34, %35 + %53 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store float %52, ptr %53, align 4, !tbaa !4 + %54 = fadd float %48, %47 + %55 = getelementptr inbounds nuw i8, ptr %6, i64 36 + store float %54, ptr %55, align 4, !tbaa !4 + %56 = fmul float %22, %22 + %57 = fsub float 1.000000e+00, %56 + %58 = fmul float %2, %57 + %59 = fadd float %56, %58 + %60 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store float %59, ptr %60, align 4, !tbaa !4 + %61 = getelementptr inbounds nuw i8, ptr %6, i64 44 + store float 0.000000e+00, ptr %61, align 4, !tbaa !4 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #22 tail call void @llvm.experimental.noalias.scope.decl(metadata !61) br label %.preheader.i.i -.preheader.i.i: ; preds = %61, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit - %indvars.iv12.i.i = phi i64 [ 0, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit ], [ %indvars.iv.next13.i.i, %61 ] - br label %62 +.preheader.i.i: ; preds = %63, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit + %indvars.iv12.i.i = phi i64 [ 0, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit ], [ %indvars.iv.next13.i.i, %63 ] + %62 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv12.i.i + br label %64 -61: ; preds = %62 +63: ; preds = %64 %indvars.iv.next13.i.i = add nuw nsw i64 %indvars.iv12.i.i, 1 %exitcond15.not.i.i = icmp eq i64 %indvars.iv.next13.i.i, 4 br i1 %exitcond15.not.i.i, label %.preheader.i91, label %.preheader.i.i, !llvm.loop !58 -62: ; preds = %62, %.preheader.i.i - %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %62 ] - %63 = icmp eq i64 %indvars.iv12.i.i, %indvars.iv.i.i - %64 = uitofp i1 %63 to float - %65 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv12.i.i, i64 %indvars.iv.i.i - store float %64, ptr %65, align 4, !tbaa !4, !alias.scope !61 +64: ; preds = %64, %.preheader.i.i + %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %64 ] + %65 = icmp eq i64 %indvars.iv12.i.i, %indvars.iv.i.i + %66 = uitofp i1 %65 to float + %67 = getelementptr inbounds nuw [4 x float], ptr %62, i64 0, i64 %indvars.iv.i.i + store float %66, ptr %67, align 4, !tbaa !4, !alias.scope !61 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 4 - br i1 %exitcond.not.i.i, label %61, label %62, !llvm.loop !60 + br i1 %exitcond.not.i.i, label %63, label %64, !llvm.loop !60 -.preheader.i91: ; preds = %61, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i - %indvars.iv16.i = phi i64 [ %indvars.iv.next17.i, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i ], [ 0, %61 ] +.preheader.i91: ; preds = %63, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i + %indvars.iv16.i = phi i64 [ %indvars.iv.next17.i, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i ], [ 0, %63 ] %invariant.gep.i = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv16.i - %66 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv16.i - br label %67 + %68 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv16.i + br label %69 -_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i: ; preds = %67 +_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i: ; preds = %69 %indvars.iv.next17.i = add nuw nsw i64 %indvars.iv16.i, 1 %exitcond19.not.i = icmp eq i64 %indvars.iv.next17.i, 4 br i1 %exitcond19.not.i, label %_ZN4pbrt9TransposeILi4EEENS_12SquareMatrixIXT_EEERKS2_.exit, label %.preheader.i91, !llvm.loop !64 -67: ; preds = %67, %.preheader.i91 - %indvars.iv.i92 = phi i64 [ 0, %.preheader.i91 ], [ %indvars.iv.next.i93, %67 ] +69: ; preds = %69, %.preheader.i91 + %indvars.iv.i92 = phi i64 [ 0, %.preheader.i91 ], [ %indvars.iv.next.i93, %69 ] %gep.i = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep.i, i64 0, i64 %indvars.iv.i92 - %68 = load float, ptr %gep.i, align 4, !tbaa !4, !noalias !61 - %69 = getelementptr inbounds nuw float, ptr %66, i64 %indvars.iv.i92 - store float %68, ptr %69, align 4, !tbaa !4, !alias.scope !61 + %70 = load float, ptr %gep.i, align 4, !tbaa !4, !noalias !61 + %71 = getelementptr inbounds nuw float, ptr %68, i64 %indvars.iv.i92 + store float %70, ptr %71, align 4, !tbaa !4, !alias.scope !61 %indvars.iv.next.i93 = add nuw nsw i64 %indvars.iv.i92, 1 %exitcond.not.i94 = icmp eq i64 %indvars.iv.next.i93, 4 - br i1 %exitcond.not.i94, label %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i, label %67, !llvm.loop !65 + br i1 %exitcond.not.i94, label %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i, label %69, !llvm.loop !65 _ZN4pbrt9TransposeILi4EEENS_12SquareMatrixIXT_EEERKS2_.exit: ; preds = %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(128) %0, ptr noundef nonnull align 4 dereferenceable(64) %6, i64 64, i1 false), !tbaa.struct !66 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 64 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %70, ptr noundef nonnull align 4 dereferenceable(64) %7, i64 64, i1 false), !tbaa.struct !66 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 64 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %72, ptr noundef nonnull align 4 dereferenceable(64) %7, i64 64, i1 false), !tbaa.struct !66 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #22 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #22 ret void diff --git a/bench/php/optimized/in_body.ll b/bench/php/optimized/in_body.ll index 67e81cfbfa4..fafc0185d4b 100644 --- a/bench/php/optimized/in_body.ll +++ b/bench/php/optimized/in_body.ll @@ -1134,21 +1134,22 @@ lxb_html_tree_node_is.exit.thread: ; preds = %10 br i1 %or.cond.i, label %36, label %lxb_html_tag_is_category.exit.backedge 36: ; preds = %lxb_html_tree_node_is.exit.thread - %37 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %15, i64 %18 - %38 = load i32, ptr %37, align 4, !tbaa !45 - %39 = and i32 %38, 2 - %.not27 = icmp eq i32 %39, 0 - br i1 %.not27, label %lxb_html_tag_is_category.exit.backedge, label %40 + %37 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %15 + %38 = getelementptr inbounds nuw [8 x i32], ptr %37, i64 0, i64 %18 + %39 = load i32, ptr %38, align 4, !tbaa !45 + %40 = and i32 %39, 2 + %.not27 = icmp eq i32 %40, 0 + br i1 %.not27, label %lxb_html_tag_is_category.exit.backedge, label %41 lxb_html_tag_is_category.exit.backedge: ; preds = %36, %lxb_html_tree_node_is.exit.thread %.not = icmp eq i64 %11, 0 br i1 %.not, label %.loopexit, label %10 -40: ; preds = %36 +41: ; preds = %36 tail call void @lxb_html_tree_parse_error(ptr noundef %0, ptr noundef %1, i32 noundef 1) #6 br label %.loopexit -.loopexit: ; preds = %lxb_html_tag_is_category.exit.backedge, %2, %40, %32 +.loopexit: ; preds = %lxb_html_tag_is_category.exit.backedge, %2, %41, %32 ret void } @@ -1600,22 +1601,23 @@ lxb_html_tree_node_is.exit31.thread: ; preds = %lxb_html_tree_curre br label %lxb_html_tree_node_is.exit35.thread lxb_html_tree_node_is.exit.thread: ; preds = %.lr.ph.preheader, %.lr.ph.backedge - %33 = phi i64 [ %52, %.lr.ph.backedge ], [ %16, %.lr.ph.preheader ] - %34 = phi i64 [ %49, %.lr.ph.backedge ], [ %13, %.lr.ph.preheader ] - %35 = phi i64 [ %45, %.lr.ph.backedge ], [ %9, %.lr.ph.preheader ] + %33 = phi i64 [ %53, %.lr.ph.backedge ], [ %16, %.lr.ph.preheader ] + %34 = phi i64 [ %50, %.lr.ph.backedge ], [ %13, %.lr.ph.preheader ] + %35 = phi i64 [ %46, %.lr.ph.backedge ], [ %9, %.lr.ph.preheader ] %36 = icmp ult i64 %34, 196 %37 = icmp ult i64 %33, 8 %or.cond.i = and i1 %36, %37 br i1 %or.cond.i, label %lxb_html_tag_is_category.exit, label %lxb_html_tag_is_category.exit.thread lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_is.exit.thread - %38 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %34, i64 %33 - %39 = load i32, ptr %38, align 4, !tbaa !45 - %40 = and i32 %39, 2 - %.not39 = icmp eq i32 %40, 0 - br i1 %.not39, label %lxb_html_tag_is_category.exit.thread, label %41 - -41: ; preds = %lxb_html_tag_is_category.exit + %38 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %34 + %39 = getelementptr inbounds nuw [8 x i32], ptr %38, i64 0, i64 %33 + %40 = load i32, ptr %39, align 4, !tbaa !45 + %41 = and i32 %40, 2 + %.not39 = icmp eq i32 %41, 0 + br i1 %.not39, label %lxb_html_tag_is_category.exit.thread, label %42 + +42: ; preds = %lxb_html_tag_is_category.exit %trunc = trunc nuw i64 %34 to i8 switch i8 %trunc, label %lxb_html_tree_node_is.exit35.thread [ i8 9, label %lxb_html_tree_node_is.exit33 @@ -1623,22 +1625,22 @@ lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_ i8 -111, label %lxb_html_tree_node_is.exit35 ] -lxb_html_tree_node_is.exit33: ; preds = %41 - %42 = icmp ne i64 %33, 2 +lxb_html_tree_node_is.exit33: ; preds = %42 + %43 = icmp ne i64 %33, 2 %.not.old.old = icmp eq i64 %35, 0 - %or.cond44 = or i1 %42, %.not.old.old + %or.cond44 = or i1 %43, %.not.old.old br i1 %or.cond44, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit34: ; preds = %41 - %43 = icmp ne i64 %33, 2 +lxb_html_tree_node_is.exit34: ; preds = %42 + %44 = icmp ne i64 %33, 2 %.not.old = icmp eq i64 %35, 0 - %or.cond43 = or i1 %43, %.not.old + %or.cond43 = or i1 %44, %.not.old br i1 %or.cond43, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit35: ; preds = %41 - %44 = icmp ne i64 %33, 2 +lxb_html_tree_node_is.exit35: ; preds = %42 + %45 = icmp ne i64 %33, 2 %.not = icmp eq i64 %35, 0 - %or.cond = or i1 %44, %.not + %or.cond = or i1 %45, %.not br i1 %or.cond, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge lxb_html_tag_is_category.exit.thread: ; preds = %lxb_html_tree_node_is.exit.thread, %lxb_html_tag_is_category.exit @@ -1646,40 +1648,40 @@ lxb_html_tag_is_category.exit.thread: ; preds = %lxb_html_tree_node_ br i1 %.not.old.old.old, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge .lr.ph.backedge: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit35, %lxb_html_tree_node_is.exit34, %lxb_html_tree_node_is.exit33 - %45 = add i64 %35, -1 - %46 = getelementptr inbounds nuw ptr, ptr %5, i64 %45 - %47 = load ptr, ptr %46, align 8, !tbaa !37 - %48 = getelementptr inbounds nuw i8, ptr %47, i64 8 - %49 = load i64, ptr %48, align 8, !tbaa !38 - %50 = icmp eq i64 %49, 113 - %51 = getelementptr inbounds nuw i8, ptr %47, i64 24 - %52 = load i64, ptr %51, align 8, !tbaa !42 - %53 = icmp eq i64 %52, 2 - %or.cond45 = select i1 %50, i1 %53, i1 false + %46 = add i64 %35, -1 + %47 = getelementptr inbounds nuw ptr, ptr %5, i64 %46 + %48 = load ptr, ptr %47, align 8, !tbaa !37 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 + %50 = load i64, ptr %49, align 8, !tbaa !38 + %51 = icmp eq i64 %50, 113 + %52 = getelementptr inbounds nuw i8, ptr %48, i64 24 + %53 = load i64, ptr %52, align 8, !tbaa !42 + %54 = icmp eq i64 %53, 2 + %or.cond45 = select i1 %51, i1 %54, i1 false br i1 %or.cond45, label %.lr.ph._crit_edge, label %lxb_html_tree_node_is.exit.thread -lxb_html_tree_node_is.exit35.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit35, %lxb_html_tree_node_is.exit33, %lxb_html_tree_node_is.exit34, %41, %2, %32 - %54 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 - %.not30 = icmp eq ptr %54, null - br i1 %.not30, label %56, label %55 +lxb_html_tree_node_is.exit35.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit35, %lxb_html_tree_node_is.exit33, %lxb_html_tree_node_is.exit34, %42, %2, %32 + %55 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 + %.not30 = icmp eq ptr %55, null + br i1 %.not30, label %57, label %56 -55: ; preds = %lxb_html_tree_node_is.exit35.thread +56: ; preds = %lxb_html_tree_node_is.exit35.thread tail call void @lxb_html_tree_close_p_element(ptr noundef %0, ptr noundef %1) #6 - br label %56 + br label %57 -56: ; preds = %55, %lxb_html_tree_node_is.exit35.thread - %57 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 - %58 = icmp eq ptr %57, null - br i1 %58, label %59, label %62 +57: ; preds = %56, %lxb_html_tree_node_is.exit35.thread + %58 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 + %59 = icmp eq ptr %58, null + br i1 %59, label %60, label %63 -59: ; preds = %56 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 2, ptr %60, align 8, !tbaa !22 - %61 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 - br label %62 +60: ; preds = %57 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 2, ptr %61, align 8, !tbaa !22 + %62 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 + br label %63 -62: ; preds = %56, %59 - %.029 = phi i1 [ %61, %59 ], [ true, %56 ] +63: ; preds = %57, %60 + %.029 = phi i1 [ %62, %60 ], [ true, %57 ] ret i1 %.029 } @@ -1780,13 +1782,14 @@ lxb_html_tree_node_is.exit40.thread: ; preds = %.lr.ph, %lxb_html_t br i1 %or.cond.i, label %lxb_html_tag_is_category.exit, label %lxb_html_tag_is_category.exit.thread lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_is.exit40.thread - %48 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %13, i64 %.pre - %49 = load i32, ptr %48, align 4, !tbaa !45 - %50 = and i32 %49, 2 - %.not52 = icmp eq i32 %50, 0 - br i1 %.not52, label %lxb_html_tag_is_category.exit.thread, label %51 - -51: ; preds = %lxb_html_tag_is_category.exit + %48 = getelementptr inbounds nuw [196 x [8 x i32]], ptr @lxb_html_tag_res_cats, i64 0, i64 %13 + %49 = getelementptr inbounds nuw [8 x i32], ptr %48, i64 0, i64 %.pre + %50 = load i32, ptr %49, align 4, !tbaa !45 + %51 = and i32 %50, 2 + %.not52 = icmp eq i32 %51, 0 + br i1 %.not52, label %lxb_html_tag_is_category.exit.thread, label %52 + +52: ; preds = %lxb_html_tag_is_category.exit %trunc = trunc nuw i64 %13 to i8 switch i8 %trunc, label %lxb_html_tree_node_is.exit47.thread [ i8 9, label %lxb_html_tree_node_is.exit45 @@ -1794,22 +1797,22 @@ lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_ i8 -111, label %lxb_html_tree_node_is.exit47 ] -lxb_html_tree_node_is.exit45: ; preds = %51 - %52 = icmp ne i64 %.pre, 2 +lxb_html_tree_node_is.exit45: ; preds = %52 + %53 = icmp ne i64 %.pre, 2 %.not.old.old = icmp eq i64 %9, 0 - %or.cond57 = or i1 %52, %.not.old.old + %or.cond57 = or i1 %53, %.not.old.old br i1 %or.cond57, label %lxb_html_tree_node_is.exit47.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit46: ; preds = %51 - %53 = icmp ne i64 %.pre, 2 +lxb_html_tree_node_is.exit46: ; preds = %52 + %54 = icmp ne i64 %.pre, 2 %.not.old = icmp eq i64 %9, 0 - %or.cond56 = or i1 %53, %.not.old + %or.cond56 = or i1 %54, %.not.old br i1 %or.cond56, label %lxb_html_tree_node_is.exit47.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit47: ; preds = %51 - %54 = icmp ne i64 %.pre, 2 +lxb_html_tree_node_is.exit47: ; preds = %52 + %55 = icmp ne i64 %.pre, 2 %.not = icmp eq i64 %9, 0 - %or.cond = or i1 %54, %.not + %or.cond = or i1 %55, %.not br i1 %or.cond, label %lxb_html_tree_node_is.exit47.thread, label %.lr.ph.backedge lxb_html_tag_is_category.exit.thread: ; preds = %lxb_html_tree_node_is.exit40.thread, %lxb_html_tag_is_category.exit @@ -1828,28 +1831,28 @@ lxb_html_tree_node_is.exit47.thread.sink.split: ; preds = %lxb_html_tree_node_ tail call void @lxb_html_tree_open_elements_pop_until_tag_id(ptr noundef nonnull %0, i64 noundef %.sink, i64 noundef 2, i1 noundef zeroext true) #6 br label %lxb_html_tree_node_is.exit47.thread -lxb_html_tree_node_is.exit47.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit47, %lxb_html_tree_node_is.exit45, %lxb_html_tree_node_is.exit46, %51, %lxb_html_tree_node_is.exit47.thread.sink.split, %2 - %55 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 - %.not37 = icmp eq ptr %55, null - br i1 %.not37, label %57, label %56 +lxb_html_tree_node_is.exit47.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit47, %lxb_html_tree_node_is.exit45, %lxb_html_tree_node_is.exit46, %52, %lxb_html_tree_node_is.exit47.thread.sink.split, %2 + %56 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 + %.not37 = icmp eq ptr %56, null + br i1 %.not37, label %58, label %57 -56: ; preds = %lxb_html_tree_node_is.exit47.thread +57: ; preds = %lxb_html_tree_node_is.exit47.thread tail call void @lxb_html_tree_close_p_element(ptr noundef %0, ptr noundef %1) #6 - br label %57 + br label %58 -57: ; preds = %56, %lxb_html_tree_node_is.exit47.thread - %58 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 - %59 = icmp eq ptr %58, null - br i1 %59, label %60, label %63 +58: ; preds = %57, %lxb_html_tree_node_is.exit47.thread + %59 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 + %60 = icmp eq ptr %59, null + br i1 %60, label %61, label %64 -60: ; preds = %57 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 2, ptr %61, align 8, !tbaa !22 - %62 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 - br label %63 +61: ; preds = %58 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 2, ptr %62, align 8, !tbaa !22 + %63 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 + br label %64 -63: ; preds = %57, %60 - %.036 = phi i1 [ %62, %60 ], [ true, %57 ] +64: ; preds = %58, %61 + %.036 = phi i1 [ %63, %61 ], [ true, %58 ] ret i1 %.036 } diff --git a/bench/pocketpy/optimized/linalg.ll b/bench/pocketpy/optimized/linalg.ll index 91c3460f3e1..50674bcb91f 100644 --- a/bench/pocketpy/optimized/linalg.ll +++ b/bench/pocketpy/optimized/linalg.ll @@ -14166,17 +14166,18 @@ _ZN4pkpy2VM10IndexErrorERKNS_3StrE.exit.i: ; preds = %.noexc28.i "_ZZN4pkpy6Mat3x39_registerEPNS_2VMEPNS_8PyObjectES4_ENK3$_9clES2_S4_S4_.exit": ; preds = %24, %_ZN4pkpy2VM10IndexErrorERKNS_3StrE.exit.i %38 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %39 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27, i64 %31 + %39 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27 + %40 = getelementptr inbounds [3 x float], ptr %39, i64 0, i64 %31 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - %40 = load float, ptr %39, align 4 - %41 = fpext float %40 to double - store double %41, ptr %4, align 8 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %43 = call noundef ptr @_ZN4pkpy11ManagedHeap5gcnewIdJRdEEEPNS_8PyObjectENS_4TypeEDpOT0_(ptr noundef nonnull align 8 dereferenceable(84) %42, i16 3, ptr noundef nonnull align 8 dereferenceable(8) %4) + %41 = load float, ptr %40, align 4 + %42 = fpext float %41 to double + store double %42, ptr %4, align 8 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %44 = call noundef ptr @_ZN4pkpy11ManagedHeap5gcnewIdJRdEEEPNS_8PyObjectENS_4TypeEDpOT0_(ptr noundef nonnull align 8 dereferenceable(84) %43, i16 3, ptr noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) - ret ptr %43 + ret ptr %44 } ; Function Attrs: mustprogress uwtable @@ -14270,8 +14271,9 @@ _ZN4pkpy2VM10IndexErrorERKNS_3StrE.exit.i: ; preds = %.noexc29.i %38 = getelementptr inbounds nuw i8, ptr %1, i64 24 %39 = call noundef double @_ZN4pkpy18_py_cast__internalIdLb1EEET_PNS_2VMEPNS_8PyObjectE(ptr noundef nonnull %0, ptr noundef %3) %40 = fptrunc double %39 to float - %41 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27, i64 %31 - store float %40, ptr %41, align 4 + %41 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27 + %42 = getelementptr inbounds [3 x float], ptr %41, i64 0, i64 %31 + store float %40, ptr %42, align 4 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) ret void diff --git a/bench/postgres/optimized/dt_common.ll b/bench/postgres/optimized/dt_common.ll index b719ed12173..6f6ae37c88a 100644 --- a/bench/postgres/optimized/dt_common.ll +++ b/bench/postgres/optimized/dt_common.ll @@ -2978,7 +2978,7 @@ j2date.exit403: ; preds = %537, %540 619: ; preds = %.sink.split, %614, %609, %613, %616 %620 = load i32, ptr %3, align 4 %621 = icmp eq i32 %620, 2 - br i1 %621, label %622, label %655 + br i1 %621, label %622, label %656 622: ; preds = %619 %623 = and i32 %.0282.lcssa506, 14 @@ -3023,21 +3023,22 @@ j2date.exit403: ; preds = %537, %540 647: ; preds = %641, %643, %636 %648 = phi i64 [ 0, %636 ], [ 1, %641 ], [ %646, %643 ] - %649 = add nsw i32 %630, -1 - %650 = zext nneg i32 %649 to i64 - %651 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %648, i64 %650 - %652 = load i32, ptr %651, align 4 - %653 = icmp sgt i32 %634, %652 - %654 = and i32 %.0282.lcssa506, 268435488 - %or.cond364.not = icmp eq i32 %654, 268435456 - %or.cond448 = select i1 %653, i1 true, i1 %or.cond364.not - br i1 %or.cond448, label %.thread417, label %655 - -655: ; preds = %647, %619 + %649 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %648 + %650 = add nsw i32 %630, -1 + %651 = zext nneg i32 %650 to i64 + %652 = getelementptr inbounds nuw [13 x i32], ptr %649, i64 0, i64 %651 + %653 = load i32, ptr %652, align 4 + %654 = icmp sgt i32 %634, %653 + %655 = and i32 %.0282.lcssa506, 268435488 + %or.cond364.not = icmp eq i32 %655, 268435456 + %or.cond448 = select i1 %654, i1 true, i1 %or.cond364.not + br i1 %or.cond448, label %.thread417, label %656 + +656: ; preds = %647, %619 br label %.thread417 -.thread417: ; preds = %322, %319, %314, %306, %97, %105, %103, %100, %585, %35, %357, %583, %581, %167, %172, %175, %163, %159, %.thread442, %.thread430, %206, %DecodePosixTimezone.exit.thread, %.thread, %628, %632, %647, %610, %591, %655, %624 - %.2 = phi i32 [ -1, %206 ], [ %627, %624 ], [ 0, %655 ], [ -1, %591 ], [ -1, %610 ], [ -1, %647 ], [ -1, %632 ], [ -1, %628 ], [ -1, %.thread ], [ -1, %DecodePosixTimezone.exit.thread ], [ %.6.ph, %.thread430 ], [ -1, %.thread442 ], [ -1, %159 ], [ -1, %163 ], [ -1, %175 ], [ -1, %172 ], [ -1, %167 ], [ -1, %581 ], [ -1, %583 ], [ -1, %357 ], [ -1, %35 ], [ -1, %585 ], [ -1, %100 ], [ -1, %103 ], [ -1, %105 ], [ -1, %97 ], [ -1, %306 ], [ -1, %314 ], [ -1, %319 ], [ -1, %322 ] +.thread417: ; preds = %322, %319, %314, %306, %97, %105, %103, %100, %585, %35, %357, %583, %581, %167, %172, %175, %163, %159, %.thread442, %.thread430, %206, %DecodePosixTimezone.exit.thread, %.thread, %628, %632, %647, %610, %591, %656, %624 + %.2 = phi i32 [ -1, %206 ], [ %627, %624 ], [ 0, %656 ], [ -1, %591 ], [ -1, %610 ], [ -1, %647 ], [ -1, %632 ], [ -1, %628 ], [ -1, %.thread ], [ -1, %DecodePosixTimezone.exit.thread ], [ %.6.ph, %.thread430 ], [ -1, %.thread442 ], [ -1, %159 ], [ -1, %163 ], [ -1, %175 ], [ -1, %172 ], [ -1, %167 ], [ -1, %581 ], [ -1, %583 ], [ -1, %357 ], [ -1, %35 ], [ -1, %585 ], [ -1, %100 ], [ -1, %103 ], [ -1, %105 ], [ -1, %97 ], [ -1, %306 ], [ -1, %314 ], [ -1, %319 ], [ -1, %322 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #17 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #17 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #17 @@ -4612,69 +4613,71 @@ sub_0307: ; preds = %180, %.tail302.thre %363 = srem i32 %357, 400 %364 = icmp eq i32 %363, 0 %365 = zext i1 %364 to i64 - %366 = add i32 %355, -1 - %367 = sext i32 %366 to i64 - %368 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %365, i64 %367 - %369 = load i32, ptr %368, align 4 - %370 = icmp sgt i32 %356, %369 - br i1 %370, label %381, label %389 + %366 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %365 + %367 = add i32 %355, -1 + %368 = sext i32 %367 to i64 + %369 = getelementptr inbounds [13 x i32], ptr %366, i64 0, i64 %368 + %370 = load i32, ptr %369, align 4 + %371 = icmp sgt i32 %356, %370 + br i1 %371, label %382, label %391 .thread392: ; preds = %360 - %371 = add i32 %355, -1 - %372 = sext i32 %371 to i64 - %373 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 1, i64 %372 - %374 = load i32, ptr %373, align 4 - %375 = icmp sgt i32 %356, %374 - br i1 %375, label %.thread297, label %389 + %372 = add i32 %355, -1 + %373 = sext i32 %372 to i64 + %374 = getelementptr inbounds [13 x i32], ptr getelementptr inbounds nuw (i8, ptr @day_tab, i64 52), i64 0, i64 %373 + %375 = load i32, ptr %374, align 4 + %376 = icmp sgt i32 %356, %375 + br i1 %376, label %.thread297, label %391 .thread: ; preds = %354 - %376 = add i32 %355, -1 - %377 = sext i32 %376 to i64 - %378 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 0, i64 %377 - %379 = load i32, ptr %378, align 4 - %380 = icmp sgt i32 %356, %379 - br i1 %380, label %.thread297, label %389 - -381: ; preds = %362 - %382 = srem i32 %357, 400 - %383 = icmp eq i32 %382, 0 - %384 = zext i1 %383 to i64 + %377 = add i32 %355, -1 + %378 = sext i32 %377 to i64 + %379 = getelementptr inbounds [13 x i32], ptr @day_tab, i64 0, i64 %378 + %380 = load i32, ptr %379, align 4 + %381 = icmp sgt i32 %356, %380 + br i1 %381, label %.thread297, label %391 + +382: ; preds = %362 + %383 = srem i32 %357, 400 + %384 = icmp eq i32 %383, 0 + %385 = zext i1 %384 to i64 br label %.thread297 -.thread297: ; preds = %.thread392, %.thread, %381 - %385 = phi i64 [ %367, %381 ], [ %377, %.thread ], [ %372, %.thread392 ] - %386 = phi i64 [ %384, %381 ], [ 0, %.thread ], [ 1, %.thread392 ] - %387 = getelementptr inbounds [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %386, i64 %385 - %388 = load i32, ptr %387, align 4 - store i32 %388, ptr %5, align 4 +.thread297: ; preds = %.thread392, %.thread, %382 + %386 = phi i64 [ %368, %382 ], [ %378, %.thread ], [ %373, %.thread392 ] + %387 = phi i64 [ %385, %382 ], [ 0, %.thread ], [ 1, %.thread392 ] + %388 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %387 + %389 = getelementptr inbounds [13 x i32], ptr %388, i64 0, i64 %386 + %390 = load i32, ptr %389, align 4 + store i32 %390, ptr %5, align 4 %.pre = load i32, ptr %4, align 4 %.pre388 = load i32, ptr %3, align 4 - br label %389 + br label %391 -389: ; preds = %.thread392, %.thread, %.thread297, %362 - %390 = phi i32 [ %.pre388, %.thread297 ], [ %357, %362 ], [ %357, %.thread ], [ %357, %.thread392 ] - %391 = phi i32 [ %.pre, %.thread297 ], [ %355, %362 ], [ %355, %.thread ], [ %355, %.thread392 ] - %392 = phi i32 [ %388, %.thread297 ], [ %356, %362 ], [ %356, %.thread ], [ %356, %.thread392 ] +391: ; preds = %.thread392, %.thread, %.thread297, %362 + %392 = phi i32 [ %.pre388, %.thread297 ], [ %357, %362 ], [ %357, %.thread ], [ %357, %.thread392 ] + %393 = phi i32 [ %.pre, %.thread297 ], [ %355, %362 ], [ %355, %.thread ], [ %355, %.thread392 ] + %394 = phi i32 [ %390, %.thread297 ], [ %356, %362 ], [ %356, %.thread ], [ %356, %.thread392 ] %.18 = phi i32 [ 1, %.thread297 ], [ %.17, %362 ], [ %.17, %.thread ], [ %.17, %.thread392 ] - %393 = load i32, ptr %8, align 4 - store i32 %393, ptr %13, align 8 - %394 = load i32, ptr %7, align 4 - %395 = getelementptr inbounds nuw i8, ptr %13, i64 4 - store i32 %394, ptr %395, align 4 - %396 = load i32, ptr %6, align 4 - %397 = getelementptr inbounds nuw i8, ptr %13, i64 8 - store i32 %396, ptr %397, align 8 - %398 = getelementptr inbounds nuw i8, ptr %13, i64 12 - store i32 %392, ptr %398, align 4 - %399 = getelementptr inbounds nuw i8, ptr %13, i64 16 - store i32 %391, ptr %399, align 8 - %400 = getelementptr inbounds nuw i8, ptr %13, i64 20 - store i32 %390, ptr %400, align 4 - %401 = call i32 @tm2timestamp(ptr noundef nonnull %13, i32 noundef 0, ptr noundef %9, ptr noundef %2) #17 + %395 = load i32, ptr %8, align 4 + store i32 %395, ptr %13, align 8 + %396 = load i32, ptr %7, align 4 + %397 = getelementptr inbounds nuw i8, ptr %13, i64 4 + store i32 %396, ptr %397, align 4 + %398 = load i32, ptr %6, align 4 + %399 = getelementptr inbounds nuw i8, ptr %13, i64 8 + store i32 %398, ptr %399, align 8 + %400 = getelementptr inbounds nuw i8, ptr %13, i64 12 + store i32 %394, ptr %400, align 4 + %401 = getelementptr inbounds nuw i8, ptr %13, i64 16 + store i32 %393, ptr %401, align 8 + %402 = getelementptr inbounds nuw i8, ptr %13, i64 20 + store i32 %392, ptr %402, align 4 + %403 = call i32 @tm2timestamp(ptr noundef nonnull %13, i32 noundef 0, ptr noundef %9, ptr noundef %2) #17 br label %.loopexit316 -.loopexit316: ; preds = %29, %10, %._crit_edge, %389, %242, %206, %198, %104, %246, %210, %202, %108 - %.0 = phi i32 [ %111, %108 ], [ %205, %202 ], [ %213, %210 ], [ %249, %246 ], [ 1, %104 ], [ 1, %198 ], [ 1, %206 ], [ 1, %242 ], [ %.0257.be, %._crit_edge ], [ %.18, %389 ], [ 1, %10 ], [ 1, %29 ] +.loopexit316: ; preds = %29, %10, %._crit_edge, %391, %242, %206, %198, %104, %246, %210, %202, %108 + %.0 = phi i32 [ %111, %108 ], [ %205, %202 ], [ %213, %210 ], [ %249, %246 ], [ 1, %104 ], [ 1, %198 ], [ 1, %206 ], [ 1, %242 ], [ %.0257.be, %._crit_edge ], [ %.18, %391 ], [ 1, %10 ], [ 1, %29 ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #17 diff --git a/bench/postgres/optimized/localtime.ll b/bench/postgres/optimized/localtime.ll index 7c5d8e93e91..a088483486b 100644 --- a/bench/postgres/optimized/localtime.ll +++ b/bench/postgres/optimized/localtime.ll @@ -2373,57 +2373,59 @@ define internal fastcc i32 @transtime(i32 noundef %0, ptr noundef nonnull readon .lr.ph: ; preds = %24 %54 = zext i1 %12 to i64 - %55 = add i32 %26, -1 - %56 = sext i32 %55 to i64 - %57 = getelementptr inbounds [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %54, i64 %56 - %58 = load i32, ptr %57, align 4 - %59 = mul i32 %52, 7 - %60 = add i32 %.045, %59 - %61 = add i32 %60, -7 - br label %64 - -62: ; preds = %64 - %63 = add nuw nsw i32 %.04358, 1 - %exitcond.not = icmp eq i32 %63, %52 - br i1 %exitcond.not, label %._crit_edge, label %64, !llvm.loop !36 - -64: ; preds = %.lr.ph, %62 - %.04358 = phi i32 [ 1, %.lr.ph ], [ %63, %62 ] - %.14657 = phi i32 [ %.045, %.lr.ph ], [ %65, %62 ] - %65 = add i32 %.14657, 7 - %.not53 = icmp slt i32 %65, %58 - br i1 %.not53, label %62, label %._crit_edge - -._crit_edge: ; preds = %62, %64, %.._crit_edge_crit_edge - %.pre-phi = phi i32 [ %.pre, %.._crit_edge_crit_edge ], [ %55, %64 ], [ %55, %62 ] - %.146.lcssa = phi i32 [ %.045, %.._crit_edge_crit_edge ], [ %61, %62 ], [ %.14657, %64 ] - %66 = mul i32 %.146.lcssa, 86400 - %67 = icmp sgt i32 %.pre-phi, 0 - br i1 %67, label %.lr.ph64, label %.loopexit + %55 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %54 + %56 = add i32 %26, -1 + %57 = sext i32 %56 to i64 + %58 = getelementptr inbounds [12 x i32], ptr %55, i64 0, i64 %57 + %59 = load i32, ptr %58, align 4 + %60 = mul i32 %52, 7 + %61 = add i32 %.045, %60 + %62 = add i32 %61, -7 + br label %65 + +63: ; preds = %65 + %64 = add nuw nsw i32 %.04358, 1 + %exitcond.not = icmp eq i32 %64, %52 + br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !36 + +65: ; preds = %.lr.ph, %63 + %.04358 = phi i32 [ 1, %.lr.ph ], [ %64, %63 ] + %.14657 = phi i32 [ %.045, %.lr.ph ], [ %66, %63 ] + %66 = add i32 %.14657, 7 + %.not53 = icmp slt i32 %66, %59 + br i1 %.not53, label %63, label %._crit_edge + +._crit_edge: ; preds = %63, %65, %.._crit_edge_crit_edge + %.pre-phi = phi i32 [ %.pre, %.._crit_edge_crit_edge ], [ %56, %65 ], [ %56, %63 ] + %.146.lcssa = phi i32 [ %.045, %.._crit_edge_crit_edge ], [ %62, %63 ], [ %.14657, %65 ] + %67 = mul i32 %.146.lcssa, 86400 + %68 = icmp sgt i32 %.pre-phi, 0 + br i1 %68, label %.lr.ph64, label %.loopexit .lr.ph64: ; preds = %._crit_edge - %68 = zext i1 %12 to i64 + %69 = zext i1 %12 to i64 + %70 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %69 %wide.trip.count = zext nneg i32 %.pre-phi to i64 - br label %69 - -69: ; preds = %.lr.ph64, %69 - %indvars.iv = phi i64 [ 0, %.lr.ph64 ], [ %indvars.iv.next, %69 ] - %.162 = phi i32 [ %66, %.lr.ph64 ], [ %73, %69 ] - %70 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %68, i64 %indvars.iv - %71 = load i32, ptr %70, align 4 - %72 = mul i32 %71, 86400 - %73 = add i32 %72, %.162 + br label %71 + +71: ; preds = %.lr.ph64, %71 + %indvars.iv = phi i64 [ 0, %.lr.ph64 ], [ %indvars.iv.next, %71 ] + %.162 = phi i32 [ %67, %.lr.ph64 ], [ %75, %71 ] + %72 = getelementptr inbounds nuw [12 x i32], ptr %70, i64 0, i64 %indvars.iv + %73 = load i32, ptr %72, align 4 + %74 = mul i32 %73, 86400 + %75 = add i32 %74, %.162 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond67.not, label %.loopexit, label %69, !llvm.loop !37 - -.loopexit: ; preds = %69, %._crit_edge, %14, %20, %11 - %.042 = phi i32 [ 0, %11 ], [ %23, %20 ], [ %spec.select54, %14 ], [ %66, %._crit_edge ], [ %73, %69 ] - %74 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %75 = load i32, ptr %74, align 4 - %76 = add i32 %.042, %2 - %77 = add i32 %76, %75 - ret i32 %77 + br i1 %exitcond67.not, label %.loopexit, label %71, !llvm.loop !37 + +.loopexit: ; preds = %71, %._crit_edge, %14, %20, %11 + %.042 = phi i32 [ 0, %11 ], [ %23, %20 ], [ %spec.select54, %14 ], [ %67, %._crit_edge ], [ %75, %71 ] + %76 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %77 = load i32, ptr %76, align 4 + %78 = add i32 %.042, %2 + %79 = add i32 %78, %77 + ret i32 %79 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/postgres/optimized/tidbitmap.ll b/bench/postgres/optimized/tidbitmap.ll index 1719c3ca56c..592571a4614 100644 --- a/bench/postgres/optimized/tidbitmap.ll +++ b/bench/postgres/optimized/tidbitmap.ll @@ -2527,14 +2527,14 @@ define dso_local ptr @tbm_shared_iterate(ptr noundef captures(ret: address, prov %15 = getelementptr inbounds nuw i8, ptr %3, i64 60 %16 = getelementptr inbounds nuw i8, ptr %3, i64 12 %17 = load i32, ptr %16, align 4 + %invariant.gep = getelementptr i8, ptr %5, i64 16 %.promoted = load i32, ptr %15, align 4 %18 = icmp slt i32 %.promoted, %17 br i1 %18, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %1 %19 = getelementptr inbounds nuw i8, ptr %3, i64 64 - %invariant.gep = getelementptr i8, ptr %5, i64 16 - %.promoted91 = load i32, ptr %19, align 8 + %.promoted89 = load i32, ptr %19, align 8 %20 = sext i32 %.promoted to i64 %wide.trip.count = sext i32 %17 to i64 br label %21 @@ -2542,13 +2542,13 @@ define dso_local ptr @tbm_shared_iterate(ptr noundef captures(ret: address, prov 21: ; preds = %.lr.ph, %tbm_advance_schunkbit.exit.thread %22 = phi i32 [ %.promoted, %.lr.ph ], [ %39, %tbm_advance_schunkbit.exit.thread ] %indvars.iv = phi i64 [ %20, %.lr.ph ], [ %indvars.iv.next, %tbm_advance_schunkbit.exit.thread ] - %23 = phi i32 [ %.promoted91, %.lr.ph ], [ 0, %tbm_advance_schunkbit.exit.thread ] + %23 = phi i32 [ %.promoted89, %.lr.ph ], [ 0, %tbm_advance_schunkbit.exit.thread ] %24 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv %25 = load i32, ptr %24, align 4 %26 = sext i32 %25 to i64 - %smax.i = tail call i32 @llvm.smax.i32(i32 %23, i32 256) %.idx = mul nsw i64 %26, 48 %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx + %smax.i = tail call i32 @llvm.smax.i32(i32 %23, i32 256) br label %27 27: ; preds = %28, %21 @@ -2560,8 +2560,7 @@ define dso_local ptr @tbm_shared_iterate(ptr noundef captures(ret: address, prov %29 = sdiv i32 %.010.i, 64 %30 = srem i32 %.010.i, 64 %31 = sext i32 %29 to i64 - %.idx84 = shl nsw i64 %31, 3 - %32 = getelementptr i8, ptr %gep, i64 %.idx84 + %32 = getelementptr inbounds [5 x i64], ptr %gep, i64 0, i64 %31 %33 = load i64, ptr %32, align 8 %34 = zext nneg i32 %30 to i64 %35 = shl nuw i64 1, %34 @@ -2632,9 +2631,9 @@ tbm_advance_schunkbit.exit.thread: ; preds = %27, %tbm_advance_sc .thread81: ; preds = %.loopexit %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %3, i64 56 %.pre = load i32, ptr %.phi.trans.insert, align 8 - %.phi.trans.insert94 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %.pre95 = load i32, ptr %.phi.trans.insert94, align 8 - %69 = icmp slt i32 %.pre, %.pre95 + %.phi.trans.insert92 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %.pre93 = load i32, ptr %.phi.trans.insert92, align 8 + %69 = icmp slt i32 %.pre, %.pre93 br i1 %69, label %.thread81.thread, label %101 .thread81.thread: ; preds = %56, %.thread81 diff --git a/bench/postgres/optimized/xlogstats.ll b/bench/postgres/optimized/xlogstats.ll index 2de4755149c..82bdb6a0db2 100644 --- a/bench/postgres/optimized/xlogstats.ll +++ b/bench/postgres/optimized/xlogstats.ll @@ -145,19 +145,20 @@ XLogRecGetLen.exit: ; preds = %XLogRecGetLen.exit. %50 = and i8 %48, 7 %spec.select = select i1 %49, i8 %50, i8 %48 %51 = getelementptr inbounds nuw i8, ptr %0, i64 6168 - %52 = zext nneg i8 %spec.select to i64 - %53 = getelementptr inbounds nuw [256 x [16 x %struct.XLogRecStats]], ptr %51, i64 0, i64 %34, i64 %52 - %54 = load i64, ptr %53, align 8 - %55 = add i64 %54, 1 - store i64 %55, ptr %53, align 8 - %56 = getelementptr inbounds nuw i8, ptr %53, i64 8 - %57 = load i64, ptr %56, align 8 - %58 = add i64 %57, %38 - store i64 %58, ptr %56, align 8 - %59 = getelementptr inbounds nuw i8, ptr %53, i64 16 - %60 = load i64, ptr %59, align 8 - %61 = add i64 %60, %.2 - store i64 %61, ptr %59, align 8 + %52 = getelementptr inbounds nuw [256 x [16 x %struct.XLogRecStats]], ptr %51, i64 0, i64 %34 + %53 = zext nneg i8 %spec.select to i64 + %54 = getelementptr inbounds nuw [16 x %struct.XLogRecStats], ptr %52, i64 0, i64 %53 + %55 = load i64, ptr %54, align 8 + %56 = add i64 %55, 1 + store i64 %56, ptr %54, align 8 + %57 = getelementptr inbounds nuw i8, ptr %54, i64 8 + %58 = load i64, ptr %57, align 8 + %59 = add i64 %58, %38 + store i64 %59, ptr %57, align 8 + %60 = getelementptr inbounds nuw i8, ptr %54, i64 16 + %61 = load i64, ptr %60, align 8 + %62 = add i64 %61, %.2 + store i64 %62, ptr %60, align 8 ret void } diff --git a/bench/proj/optimized/defmodel.ll b/bench/proj/optimized/defmodel.ll index 7707daba1b6..fd340ea8991 100644 --- a/bench/proj/optimized/defmodel.ll +++ b/bench/proj/optimized/defmodel.ll @@ -887,7 +887,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %. store double 0.000000e+00, ptr %27, align 8, !tbaa !15 %28 = load i64, ptr %14, align 8, !tbaa !14 %29 = icmp eq i64 %28, 0 - br i1 %29, label %119, label %30 + br i1 %29, label %121, label %30 30: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #37 @@ -933,7 +933,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %. 51: ; preds = %50 invoke void @__cxa_throw(ptr nonnull %49, ptr nonnull @_ZTIN16DeformationModel16ParsingExceptionE, ptr nonnull @_ZN16DeformationModel16ParsingExceptionD2Ev) #36 - to label %102 unwind label %53 + to label %104 unwind label %53 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i: ; preds = %48 %52 = landingpad { ptr, i32 } @@ -986,131 +986,133 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %53 br i1 %73, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %70 + %75 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74 %wide.trip.count.i = zext nneg i32 %36 to i64 - br label %80 - -._crit_edge.i: ; preds = %80, %70 - %.036.lcssa.i = phi i32 [ %72, %70 ], [ %84, %80 ] - %75 = add nsw i32 %36, -1 - %76 = zext nneg i32 %75 to i64 - %77 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74, i64 %76 - %78 = load i32, ptr %77, align 4, !tbaa !18 - %79 = icmp sgt i32 %39, %78 - br i1 %79, label %85, label %103 - -80: ; preds = %80, %.lr.ph.i - %indvars.iv.i = phi i64 [ 1, %.lr.ph.i ], [ %indvars.iv.next.i, %80 ] - %.03659.i = phi i32 [ %72, %.lr.ph.i ], [ %84, %80 ] - %81 = add nsw i64 %indvars.iv.i, -1 - %82 = getelementptr inbounds [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74, i64 %81 - %83 = load i32, ptr %82, align 4, !tbaa !18 - %84 = add nsw i32 %83, %.03659.i + br label %82 + +._crit_edge.i: ; preds = %82, %70 + %.036.lcssa.i = phi i32 [ %72, %70 ], [ %86, %82 ] + %76 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN16DeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %74 + %77 = add nsw i32 %36, -1 + %78 = zext nneg i32 %77 to i64 + %79 = getelementptr inbounds nuw [12 x i32], ptr %76, i64 0, i64 %78 + %80 = load i32, ptr %79, align 4, !tbaa !18 + %81 = icmp sgt i32 %39, %80 + br i1 %81, label %87, label %105 + +82: ; preds = %82, %.lr.ph.i + %indvars.iv.i = phi i64 [ 1, %.lr.ph.i ], [ %indvars.iv.next.i, %82 ] + %.03659.i = phi i32 [ %72, %.lr.ph.i ], [ %86, %82 ] + %83 = add nsw i64 %indvars.iv.i, -1 + %84 = getelementptr inbounds [12 x i32], ptr %75, i64 0, i64 %83 + %85 = load i32, ptr %84, align 4, !tbaa !18 + %86 = add nsw i32 %85, %.03659.i %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.i, label %80, !llvm.loop !20 + br i1 %exitcond.not.i, label %._crit_edge.i, label %82, !llvm.loop !20 -85: ; preds = %._crit_edge.i - %86 = call ptr @__cxa_allocate_exception(i64 40) #37 +87: ; preds = %._crit_edge.i + %88 = call ptr @__cxa_allocate_exception(i64 40) #37 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #37 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull @.str.114, ptr noundef nonnull align 8 dereferenceable(32) %1) - to label %87 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i + to label %89 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i -87: ; preds = %85 - invoke void @_ZN16DeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %86, ptr noundef nonnull align 8 dereferenceable(32) %10) - to label %88 unwind label %90 +89: ; preds = %87 + invoke void @_ZN16DeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %88, ptr noundef nonnull align 8 dereferenceable(32) %10) + to label %90 unwind label %92 -88: ; preds = %87 - invoke void @__cxa_throw(ptr nonnull %86, ptr nonnull @_ZTIN16DeformationModel16ParsingExceptionE, ptr nonnull @_ZN16DeformationModel16ParsingExceptionD2Ev) #36 - to label %102 unwind label %90 +90: ; preds = %89 + invoke void @__cxa_throw(ptr nonnull %88, ptr nonnull @_ZTIN16DeformationModel16ParsingExceptionE, ptr nonnull @_ZN16DeformationModel16ParsingExceptionD2Ev) #36 + to label %104 unwind label %92 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i: ; preds = %85 - %89 = landingpad { ptr, i32 } +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i: ; preds = %87 + %91 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #37 br label %.sink.split.i -90: ; preds = %88, %87 - %.0.i = phi i1 [ false, %88 ], [ true, %87 ] - %91 = landingpad { ptr, i32 } +92: ; preds = %90, %89 + %.0.i = phi i1 [ false, %90 ], [ true, %89 ] + %93 = landingpad { ptr, i32 } cleanup - %92 = load ptr, ptr %10, align 8, !tbaa !3 - %93 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %94 = icmp eq ptr %92, %93 - br i1 %94, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i + %94 = load ptr, ptr %10, align 8, !tbaa !3 + %95 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %96 = icmp eq ptr %94, %95 + br i1 %96, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i: ; preds = %90 - %95 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %96 = load i64, ptr %95, align 8, !tbaa !14 - %97 = icmp ult i64 %96, 16 - call void @llvm.assume(i1 %97) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i: ; preds = %92 + %97 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %98 = load i64, ptr %97, align 8, !tbaa !14 + %99 = icmp ult i64 %98, 16 + call void @llvm.assume(i1 %99) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #37 br i1 %.0.i, label %.sink.split.i, label %.body -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i: ; preds = %90 - %98 = load i64, ptr %93, align 8, !tbaa !13 - %99 = add i64 %98, 1 - call void @_ZdlPvm(ptr noundef %92, i64 noundef %99) #38 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i: ; preds = %92 + %100 = load i64, ptr %95, align 8, !tbaa !13 + %101 = add i64 %100, 1 + call void @_ZdlPvm(ptr noundef %94, i64 noundef %101) #38 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #37 br i1 %.0.i, label %.sink.split.i, label %.body .sink.split.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i - %.sink.i = phi ptr [ %49, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %86, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] - %.pn46.pn.ph.i = phi { ptr, i32 } [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %89, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] + %.sink.i = phi ptr [ %49, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %88, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] + %.pn46.pn.ph.i = phi { ptr, i32 } [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %93, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] call void @__cxa_free_exception(ptr %.sink.i) #37 br label %.body .body: ; preds = %.sink.split.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i - %.pn46.pn.i = phi { ptr, i32 } [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ], [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %.pn46.pn.ph.i, %.sink.split.i ] + %.pn46.pn.i = phi { ptr, i32 } [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ], [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %93, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %.pn46.pn.ph.i, %.sink.split.i ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #37 - %100 = load ptr, ptr %0, align 8, !tbaa !3 - %101 = icmp eq ptr %100, %12 - br i1 %101, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %102 = load ptr, ptr %0, align 8, !tbaa !3 + %103 = icmp eq ptr %102, %12 + br i1 %103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i -102: ; preds = %88, %51 +104: ; preds = %90, %51 unreachable -103: ; preds = %._crit_edge.i - %104 = sitofp i32 %34 to double - %105 = mul nsw i32 %.036.lcssa.i, 86400 - %106 = mul nuw nsw i32 %42, 3600 - %107 = mul nuw nsw i32 %44, 60 - %108 = add nuw nsw i32 %107, %106 - %109 = add nuw nsw i32 %108, %46 - %110 = add i32 %109, %105 - %111 = sitofp i32 %110 to double - %112 = select i1 %71, double 3.162240e+07, double 3.153600e+07 - %113 = fdiv double %111, %112 - %114 = fadd double %113, %104 +105: ; preds = %._crit_edge.i + %106 = sitofp i32 %34 to double + %107 = mul nsw i32 %.036.lcssa.i, 86400 + %108 = mul nuw nsw i32 %42, 3600 + %109 = mul nuw nsw i32 %44, 60 + %110 = add nuw nsw i32 %109, %108 + %111 = add nuw nsw i32 %110, %46 + %112 = add i32 %111, %107 + %113 = sitofp i32 %112 to double + %114 = select i1 %71, double 3.162240e+07, double 3.153600e+07 + %115 = fdiv double %113, %114 + %116 = fadd double %115, %106 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #37 - store double %114, ptr %27, align 8, !tbaa !15 - br label %119 + store double %116, ptr %27, align 8, !tbaa !15 + br label %121 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %.body - %115 = load i64, ptr %24, align 8, !tbaa !14 - %116 = icmp ult i64 %115, 16 - call void @llvm.assume(i1 %116) + %117 = load i64, ptr %24, align 8, !tbaa !14 + %118 = icmp ult i64 %117, 16 + call void @llvm.assume(i1 %118) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.body - %117 = load i64, ptr %12, align 8, !tbaa !13 - %118 = add i64 %117, 1 - call void @_ZdlPvm(ptr noundef %100, i64 noundef %118) #38 + %119 = load i64, ptr %12, align 8, !tbaa !13 + %120 = add i64 %119, 1 + call void @_ZdlPvm(ptr noundef %102, i64 noundef %120) #38 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 resume { ptr, i32 } %.pn46.pn.i -119: ; preds = %103, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit +121: ; preds = %105, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit ret void } diff --git a/bench/proj/optimized/healpix.ll b/bench/proj/optimized/healpix.ll index 4718840b19f..2bb1f1ac729 100644 --- a/bench/proj/optimized/healpix.ll +++ b/bench/proj/optimized/healpix.ll @@ -968,38 +968,39 @@ _ZL10vector_subPKdS0_Pd.exit.critedge.i: ; preds = %80, %79, %78, %77, %85 = fsub double %.sroa.3.0.i, %.0.i.i br label %86 -86: ; preds = %94, %_ZL10vector_subPKdS0_Pd.exit.critedge.i - %87 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %94 ] - %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %94 ] - %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %94 ] - br label %88 - -88: ; preds = %88, %86 - %89 = phi i1 [ true, %86 ], [ false, %88 ] - %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %84, %86 ], [ %85, %88 ] - %indvars.iv.i27.i = phi i64 [ 0, %86 ], [ 1, %88 ] - %90 = phi double [ 0.000000e+00, %86 ], [ %93, %88 ] - %91 = getelementptr inbounds nuw [2 x double], ptr %83, i64 %indvars.iv18.i.i, i64 %indvars.iv.i27.i - %92 = load double, ptr %91, align 8, !tbaa !56 - %93 = tail call double @llvm.fmuladd.f64(double %92, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %90) - br i1 %89, label %88, label %94, !llvm.loop !63 - -94: ; preds = %88 - store double %93, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 +86: ; preds = %95, %_ZL10vector_subPKdS0_Pd.exit.critedge.i + %87 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %95 ] + %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %95 ] + %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %95 ] + %88 = getelementptr inbounds nuw [2 x double], ptr %83, i64 %indvars.iv18.i.i + br label %89 + +89: ; preds = %89, %86 + %90 = phi i1 [ true, %86 ], [ false, %89 ] + %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %84, %86 ], [ %85, %89 ] + %indvars.iv.i27.i = phi i64 [ 0, %86 ], [ 1, %89 ] + %91 = phi double [ 0.000000e+00, %86 ], [ %94, %89 ] + %92 = getelementptr inbounds nuw [2 x double], ptr %88, i64 0, i64 %indvars.iv.i27.i + %93 = load double, ptr %92, align 8, !tbaa !56 + %94 = tail call double @llvm.fmuladd.f64(double %93, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %91) + br i1 %90, label %89, label %95, !llvm.loop !63 + +95: ; preds = %89 + store double %94, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 br i1 %87, label %86, label %_ZL11dot_productPA2_KdPS_Pd.exit.i, !llvm.loop !64 -_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %94 - %95 = sitofp i32 %81 to double - %96 = tail call double @llvm.fmuladd.f64(double %95, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) +_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %95 + %96 = sitofp i32 %81 to double + %97 = tail call double @llvm.fmuladd.f64(double %96, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i = load double, ptr %.sroa.052.i, align 16, !tbaa !56 - %97 = fadd double %96, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i + %98 = fadd double %97, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i = load double, ptr %.sroa.453.i, align 8, !tbaa !56 - %98 = fadd double %82, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i + %99 = fadd double %82, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i br label %_ZL12combine_capsddiii.exit _ZL12combine_capsddiii.exit: ; preds = %54, %_ZL11dot_productPA2_KdPS_Pd.exit.i - %.sroa.0.0.i = phi double [ %97, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %54 ] - %.sroa.3.0.i11 = phi double [ %98, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %54 ] + %.sroa.0.0.i = phi double [ %98, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %54 ] + %.sroa.3.0.i11 = phi double [ %99, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %54 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.052.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.453.i) %.fca.0.insert.i12 = insertvalue { double, double } poison, double %.sroa.0.0.i, 0 @@ -1235,38 +1236,39 @@ _ZL10vector_subPKdS0_Pd.exit.critedge.i: ; preds = %62, %61, %60, %59, %67 = fsub double %.sroa.3.0.i, %.0.i.i br label %68 -68: ; preds = %76, %_ZL10vector_subPKdS0_Pd.exit.critedge.i - %69 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %76 ] - %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %76 ] - %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %76 ] - br label %70 - -70: ; preds = %70, %68 - %71 = phi i1 [ true, %68 ], [ false, %70 ] - %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %66, %68 ], [ %67, %70 ] - %indvars.iv.i27.i = phi i64 [ 0, %68 ], [ 1, %70 ] - %72 = phi double [ 0.000000e+00, %68 ], [ %75, %70 ] - %73 = getelementptr inbounds nuw [2 x double], ptr %65, i64 %indvars.iv18.i.i, i64 %indvars.iv.i27.i - %74 = load double, ptr %73, align 8, !tbaa !56 - %75 = tail call double @llvm.fmuladd.f64(double %74, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %72) - br i1 %71, label %70, label %76, !llvm.loop !63 - -76: ; preds = %70 - store double %75, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 +68: ; preds = %77, %_ZL10vector_subPKdS0_Pd.exit.critedge.i + %69 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ false, %77 ] + %indvars.iv18.i.sroa.phi.i = phi ptr [ %.sroa.052.i, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ %.sroa.453.i, %77 ] + %indvars.iv18.i.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge.i ], [ 1, %77 ] + %70 = getelementptr inbounds nuw [2 x double], ptr %65, i64 %indvars.iv18.i.i + br label %71 + +71: ; preds = %71, %68 + %72 = phi i1 [ true, %68 ], [ false, %71 ] + %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %66, %68 ], [ %67, %71 ] + %indvars.iv.i27.i = phi i64 [ 0, %68 ], [ 1, %71 ] + %73 = phi double [ 0.000000e+00, %68 ], [ %76, %71 ] + %74 = getelementptr inbounds nuw [2 x double], ptr %70, i64 0, i64 %indvars.iv.i27.i + %75 = load double, ptr %74, align 8, !tbaa !56 + %76 = tail call double @llvm.fmuladd.f64(double %75, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %73) + br i1 %72, label %71, label %77, !llvm.loop !63 + +77: ; preds = %71 + store double %76, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 br i1 %69, label %68, label %_ZL11dot_productPA2_KdPS_Pd.exit.i, !llvm.loop !64 -_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %76 - %77 = sitofp i32 %63 to double - %78 = tail call double @llvm.fmuladd.f64(double %77, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) +_ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %77 + %78 = sitofp i32 %63 to double + %79 = tail call double @llvm.fmuladd.f64(double %78, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i = load double, ptr %.sroa.052.i, align 16, !tbaa !56 - %79 = fadd double %78, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i + %80 = fadd double %79, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i = load double, ptr %.sroa.453.i, align 8, !tbaa !56 - %80 = fadd double %64, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i + %81 = fadd double %64, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i br label %_ZL12combine_capsddiii.exit _ZL12combine_capsddiii.exit: ; preds = %36, %_ZL11dot_productPA2_KdPS_Pd.exit.i - %.sroa.0.0.i = phi double [ %79, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %36 ] - %.sroa.3.0.i8 = phi double [ %80, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %36 ] + %.sroa.0.0.i = phi double [ %80, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %36 ] + %.sroa.3.0.i8 = phi double [ %81, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %36 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.052.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.453.i) %.fca.0.insert.i9 = insertvalue { double, double } poison, double %.sroa.0.0.i, 0 @@ -1883,38 +1885,39 @@ _ZL10vector_subPKdS0_Pd.exit.critedge: ; preds = %121, %120, %119, %1 %126 = fsub double %1, %.sroa.30.0.ph78 br label %127 -127: ; preds = %135, %_ZL10vector_subPKdS0_Pd.exit.critedge - %128 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ false, %135 ] - %indvars.iv18.i.sroa.phi = phi ptr [ %.sroa.052, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ %.sroa.453, %135 ] - %indvars.iv18.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ 1, %135 ] - br label %129 - -129: ; preds = %129, %127 - %130 = phi i1 [ true, %127 ], [ false, %129 ] - %indvars.iv.i27.sroa.phi.sroa.speculated = phi double [ %125, %127 ], [ %126, %129 ] - %indvars.iv.i27 = phi i64 [ 0, %127 ], [ 1, %129 ] - %131 = phi double [ 0.000000e+00, %127 ], [ %134, %129 ] - %132 = getelementptr inbounds nuw [2 x double], ptr %124, i64 %indvars.iv18.i, i64 %indvars.iv.i27 - %133 = load double, ptr %132, align 8, !tbaa !56 - %134 = tail call double @llvm.fmuladd.f64(double %133, double %indvars.iv.i27.sroa.phi.sroa.speculated, double %131) - br i1 %130, label %129, label %135, !llvm.loop !63 - -135: ; preds = %129 - store double %134, ptr %indvars.iv18.i.sroa.phi, align 8, !tbaa !56 +127: ; preds = %136, %_ZL10vector_subPKdS0_Pd.exit.critedge + %128 = phi i1 [ true, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ false, %136 ] + %indvars.iv18.i.sroa.phi = phi ptr [ %.sroa.052, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ %.sroa.453, %136 ] + %indvars.iv18.i = phi i64 [ 0, %_ZL10vector_subPKdS0_Pd.exit.critedge ], [ 1, %136 ] + %129 = getelementptr inbounds nuw [2 x double], ptr %124, i64 %indvars.iv18.i + br label %130 + +130: ; preds = %130, %127 + %131 = phi i1 [ true, %127 ], [ false, %130 ] + %indvars.iv.i27.sroa.phi.sroa.speculated = phi double [ %125, %127 ], [ %126, %130 ] + %indvars.iv.i27 = phi i64 [ 0, %127 ], [ 1, %130 ] + %132 = phi double [ 0.000000e+00, %127 ], [ %135, %130 ] + %133 = getelementptr inbounds nuw [2 x double], ptr %129, i64 0, i64 %indvars.iv.i27 + %134 = load double, ptr %133, align 8, !tbaa !56 + %135 = tail call double @llvm.fmuladd.f64(double %134, double %indvars.iv.i27.sroa.phi.sroa.speculated, double %132) + br i1 %131, label %130, label %136, !llvm.loop !63 + +136: ; preds = %130 + store double %135, ptr %indvars.iv18.i.sroa.phi, align 8, !tbaa !56 br i1 %128, label %127, label %_ZL11dot_productPA2_KdPS_Pd.exit, !llvm.loop !64 -_ZL11dot_productPA2_KdPS_Pd.exit: ; preds = %135 - %136 = sitofp i32 %122 to double - %137 = tail call double @llvm.fmuladd.f64(double %136, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) +_ZL11dot_productPA2_KdPS_Pd.exit: ; preds = %136 + %137 = sitofp i32 %122 to double + %138 = tail call double @llvm.fmuladd.f64(double %137, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.0..sroa.052.0. = load double, ptr %.sroa.052, align 16, !tbaa !56 - %138 = fadd double %137, %.sroa.052.0..sroa.052.0. + %139 = fadd double %138, %.sroa.052.0..sroa.052.0. %.sroa.453.0..sroa.453.0. = load double, ptr %.sroa.453, align 8, !tbaa !56 - %139 = fadd double %123, %.sroa.453.0..sroa.453.0. + %140 = fadd double %123, %.sroa.453.0..sroa.453.0. br label %_ZL7get_capddiii.exit _ZL7get_capddiii.exit: ; preds = %21, %9, %_ZL11dot_productPA2_KdPS_Pd.exit - %.sroa.0.0 = phi double [ %138, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %0, %9 ], [ %0, %21 ] - %.sroa.3.0 = phi double [ %139, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %1, %9 ], [ %1, %21 ] + %.sroa.0.0 = phi double [ %139, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %0, %9 ], [ %0, %21 ] + %.sroa.3.0 = phi double [ %140, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %1, %9 ], [ %1, %21 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.052) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.453) %.fca.0.insert = insertvalue { double, double } poison, double %.sroa.0.0, 0 diff --git a/bench/proj/optimized/test_defmodel.ll b/bench/proj/optimized/test_defmodel.ll index 99e37328e52..cf6d8311ec9 100644 --- a/bench/proj/optimized/test_defmodel.ll +++ b/bench/proj/optimized/test_defmodel.ll @@ -1707,7 +1707,7 @@ define internal fastcc noundef double @_ZN20TestDeformationModelL20ISO8601ToDeci 30: ; preds = %29 invoke void @__cxa_throw(ptr nonnull %28, ptr nonnull @_ZTIN20TestDeformationModel16ParsingExceptionE, ptr nonnull @_ZN20TestDeformationModel16ParsingExceptionD2Ev) #39 - to label %92 unwind label %32 + to label %94 unwind label %32 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread: ; preds = %27 %31 = landingpad { ptr, i32 } @@ -1730,14 +1730,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa %39 = icmp ult i64 %38, 16 call void @llvm.assume(i1 %39) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #40 - br i1 %.039, label %.sink.split, label %91 + br i1 %.039, label %.sink.split, label %93 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %32 %40 = load i64, ptr %35, align 8, !tbaa !14 %41 = add i64 %40, 1 call void @_ZdlPvm(ptr noundef %34, i64 noundef %41) #41 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #40 - br i1 %.039, label %.sink.split, label %91 + br i1 %.039, label %.sink.split, label %93 42: ; preds = %1 %43 = and i32 %13, 3 @@ -1760,101 +1760,103 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %32 br i1 %52, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %49 + %54 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53 %wide.trip.count = zext nneg i32 %15 to i64 - br label %59 + br label %61 -._crit_edge: ; preds = %59, %49 - %.036.lcssa = phi i32 [ %51, %49 ], [ %63, %59 ] - %54 = add nsw i32 %15, -1 - %55 = zext nneg i32 %54 to i64 - %56 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53, i64 %55 - %57 = load i32, ptr %56, align 4, !tbaa !19 - %58 = icmp sgt i32 %18, %57 - br i1 %58, label %64, label %79 - -59: ; preds = %.lr.ph, %59 - %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %59 ] - %.03659 = phi i32 [ %51, %.lr.ph ], [ %63, %59 ] - %60 = add nsw i64 %indvars.iv, -1 - %61 = getelementptr inbounds [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53, i64 %60 - %62 = load i32, ptr %61, align 4, !tbaa !19 - %63 = add nsw i32 %62, %.03659 +._crit_edge: ; preds = %61, %49 + %.036.lcssa = phi i32 [ %51, %49 ], [ %65, %61 ] + %55 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @__const._ZN20TestDeformationModelL20ISO8601ToDecimalYearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.month_table, i64 0, i64 %53 + %56 = add nsw i32 %15, -1 + %57 = zext nneg i32 %56 to i64 + %58 = getelementptr inbounds nuw [12 x i32], ptr %55, i64 0, i64 %57 + %59 = load i32, ptr %58, align 4, !tbaa !19 + %60 = icmp sgt i32 %18, %59 + br i1 %60, label %66, label %81 + +61: ; preds = %.lr.ph, %61 + %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %61 ] + %.03659 = phi i32 [ %51, %.lr.ph ], [ %65, %61 ] + %62 = add nsw i64 %indvars.iv, -1 + %63 = getelementptr inbounds [12 x i32], ptr %54, i64 0, i64 %62 + %64 = load i32, ptr %63, align 4, !tbaa !19 + %65 = add nsw i32 %64, %.03659 %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 %59, !llvm.loop !21 + br i1 %exitcond.not, label %._crit_edge, label %61, !llvm.loop !21 -64: ; preds = %._crit_edge - %65 = call ptr @__cxa_allocate_exception(i64 40) #40 +66: ; preds = %._crit_edge + %67 = call ptr @__cxa_allocate_exception(i64 40) #40 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #40 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull @.str.135, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %66 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread + to label %68 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread -66: ; preds = %64 - invoke void @_ZN20TestDeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %65, ptr noundef nonnull align 8 dereferenceable(32) %9) - to label %67 unwind label %69 +68: ; preds = %66 + invoke void @_ZN20TestDeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %67, ptr noundef nonnull align 8 dereferenceable(32) %9) + to label %69 unwind label %71 -67: ; preds = %66 - invoke void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTIN20TestDeformationModel16ParsingExceptionE, ptr nonnull @_ZN20TestDeformationModel16ParsingExceptionD2Ev) #39 - to label %92 unwind label %69 +69: ; preds = %68 + invoke void @__cxa_throw(ptr nonnull %67, ptr nonnull @_ZTIN20TestDeformationModel16ParsingExceptionE, ptr nonnull @_ZN20TestDeformationModel16ParsingExceptionD2Ev) #39 + to label %94 unwind label %71 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread: ; preds = %64 - %68 = landingpad { ptr, i32 } +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread: ; preds = %66 + %70 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #40 br label %.sink.split -69: ; preds = %67, %66 - %.0 = phi i1 [ false, %67 ], [ true, %66 ] - %70 = landingpad { ptr, i32 } +71: ; preds = %69, %68 + %.0 = phi i1 [ false, %69 ], [ true, %68 ] + %72 = landingpad { ptr, i32 } cleanup - %71 = load ptr, ptr %9, align 8, !tbaa !4 - %72 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %73 = icmp eq ptr %71, %72 - br i1 %73, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 + %73 = load ptr, ptr %9, align 8, !tbaa !4 + %74 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %75 = icmp eq ptr %73, %74 + br i1 %75, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51: ; preds = %69 - %74 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %75 = load i64, ptr %74, align 8, !tbaa !15 - %76 = icmp ult i64 %75, 16 - call void @llvm.assume(i1 %76) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51: ; preds = %71 + %76 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %77 = load i64, ptr %76, align 8, !tbaa !15 + %78 = icmp ult i64 %77, 16 + call void @llvm.assume(i1 %78) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #40 - br i1 %.0, label %.sink.split, label %91 + br i1 %.0, label %.sink.split, label %93 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %69 - %77 = load i64, ptr %72, align 8, !tbaa !14 - %78 = add i64 %77, 1 - call void @_ZdlPvm(ptr noundef %71, i64 noundef %78) #41 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %71 + %79 = load i64, ptr %74, align 8, !tbaa !14 + %80 = add i64 %79, 1 + call void @_ZdlPvm(ptr noundef %73, i64 noundef %80) #41 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #40 - br i1 %.0, label %.sink.split, label %91 - -79: ; preds = %._crit_edge - %80 = sitofp i32 %13 to double - %81 = mul nsw i32 %.036.lcssa, 86400 - %82 = mul nuw nsw i32 %21, 3600 - %83 = mul nuw nsw i32 %23, 60 - %84 = add nuw nsw i32 %83, %82 - %85 = add nuw nsw i32 %84, %25 - %86 = add i32 %85, %81 - %87 = sitofp i32 %86 to double - %88 = select i1 %50, double 3.162240e+07, double 3.153600e+07 - %89 = fdiv double %87, %88 - %90 = fadd double %89, %80 + br i1 %.0, label %.sink.split, label %93 + +81: ; preds = %._crit_edge + %82 = sitofp i32 %13 to double + %83 = mul nsw i32 %.036.lcssa, 86400 + %84 = mul nuw nsw i32 %21, 3600 + %85 = mul nuw nsw i32 %23, 60 + %86 = add nuw nsw i32 %85, %84 + %87 = add nuw nsw i32 %86, %25 + %88 = add i32 %87, %83 + %89 = sitofp i32 %88 to double + %90 = select i1 %50, double 3.162240e+07, double 3.153600e+07 + %91 = fdiv double %89, %90 + %92 = fadd double %91, %82 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #40 - ret double %90 + ret double %92 .sink.split: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i - %.sink = phi ptr [ %28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %65, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] - %.pn46.pn.ph = phi { ptr, i32 } [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %70, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %68, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] + %.sink = phi ptr [ %28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %67, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] + %.pn46.pn.ph = phi { ptr, i32 } [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %72, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %72, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] call void @__cxa_free_exception(ptr %.sink) #40 - br label %91 + br label %93 -91: ; preds = %.sink.split, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %.pn46.pn = phi { ptr, i32 } [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ], [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %70, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %.pn46.pn.ph, %.sink.split ] +93: ; preds = %.sink.split, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit + %.pn46.pn = phi { ptr, i32 } [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %72, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ], [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %72, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %.pn46.pn.ph, %.sink.split ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #40 @@ -1863,7 +1865,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %69 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #40 resume { ptr, i32 } %.pn46.pn -92: ; preds = %67, %30 +94: ; preds = %69, %30 unreachable } diff --git a/bench/qemu/optimized/ahci.ll b/bench/qemu/optimized/ahci.ll index 286c12a8e7b..5a9fae93df0 100644 --- a/bench/qemu/optimized/ahci.ll +++ b/bench/qemu/optimized/ahci.ll @@ -640,61 +640,62 @@ trace_ahci_reset_port.exit: ; preds = %2, %9, %11, %17, %2 %35 = getelementptr inbounds nuw i8, ptr %34, i64 672 %36 = load ptr, ptr %35, align 8 %.not = icmp eq ptr %36, null - br i1 %.not, label %58, label %.preheader + br i1 %.not, label %59, label %.preheader -.preheader: ; preds = %trace_ahci_reset_port.exit, %49 - %indvars.iv = phi i64 [ %indvars.iv.next, %49 ], [ 0, %trace_ahci_reset_port.exit ] +.preheader: ; preds = %trace_ahci_reset_port.exit, %50 + %indvars.iv = phi i64 [ %indvars.iv.next, %50 ], [ 0, %trace_ahci_reset_port.exit ] %37 = load ptr, ptr %0, align 16 - %38 = getelementptr inbounds %struct.AHCIDevice, ptr %37, i64 %5, i32 14, i64 %indvars.iv - %39 = getelementptr inbounds nuw i8, ptr %38, i64 108 - store i8 0, ptr %39, align 4 - %40 = getelementptr inbounds nuw i8, ptr %38, i64 107 - %41 = load i8, ptr %40, align 1, !range !9, !noundef !10 - %42 = trunc nuw i8 %41 to i1 - br i1 %42, label %43, label %49 - -43: ; preds = %.preheader - %44 = getelementptr inbounds nuw i8, ptr %38, i64 8 - %45 = load ptr, ptr %44, align 8 - %.not41 = icmp eq ptr %45, null - br i1 %.not41, label %.thread, label %46 - -46: ; preds = %43 - tail call void @blk_aio_cancel(ptr noundef nonnull %45) #14 - store ptr null, ptr %44, align 8 - %.pre = load i8, ptr %40, align 1, !range !9 - %47 = trunc nuw i8 %.pre to i1 - br i1 %47, label %.thread, label %49 - -.thread: ; preds = %43, %46 - %48 = getelementptr inbounds nuw i8, ptr %38, i64 24 - tail call void @qemu_sglist_destroy(ptr noundef nonnull %48) #14 - store i8 0, ptr %40, align 1 - br label %49 + %38 = getelementptr inbounds %struct.AHCIDevice, ptr %37, i64 %5, i32 14 + %39 = getelementptr inbounds nuw [32 x %struct.NCQTransferState], ptr %38, i64 0, i64 %indvars.iv + %40 = getelementptr inbounds nuw i8, ptr %39, i64 108 + store i8 0, ptr %40, align 4 + %41 = getelementptr inbounds nuw i8, ptr %39, i64 107 + %42 = load i8, ptr %41, align 1, !range !9, !noundef !10 + %43 = trunc nuw i8 %42 to i1 + br i1 %43, label %44, label %50 + +44: ; preds = %.preheader + %45 = getelementptr inbounds nuw i8, ptr %39, i64 8 + %46 = load ptr, ptr %45, align 8 + %.not41 = icmp eq ptr %46, null + br i1 %.not41, label %.thread, label %47 -49: ; preds = %46, %.preheader, %.thread +47: ; preds = %44 + tail call void @blk_aio_cancel(ptr noundef nonnull %46) #14 + store ptr null, ptr %45, align 8 + %.pre = load i8, ptr %41, align 1, !range !9 + %48 = trunc nuw i8 %.pre to i1 + br i1 %48, label %.thread, label %50 + +.thread: ; preds = %44, %47 + %49 = getelementptr inbounds nuw i8, ptr %39, i64 24 + tail call void @qemu_sglist_destroy(ptr noundef nonnull %49) #14 + store i8 0, ptr %41, align 1 + br label %50 + +50: ; preds = %47, %.preheader, %.thread %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 32 - br i1 %exitcond.not, label %50, label %.preheader, !llvm.loop !13 - -50: ; preds = %49 - %51 = load ptr, ptr %0, align 16 - %52 = getelementptr inbounds %struct.AHCIDevice, ptr %51, i64 %5, i32 3 - store i32 0, ptr %52, align 4 - %53 = getelementptr inbounds nuw i8, ptr %34, i64 12 - %54 = load i32, ptr %53, align 4 - %55 = icmp eq i32 %54, 1 - %. = select i1 %55, i32 -351010559, i32 257 - %.45 = select i1 %55, i8 112, i8 48 + br i1 %exitcond.not, label %51, label %.preheader, !llvm.loop !13 + +51: ; preds = %50 + %52 = load ptr, ptr %0, align 16 + %53 = getelementptr inbounds %struct.AHCIDevice, ptr %52, i64 %5, i32 3 + store i32 0, ptr %53, align 4 + %54 = getelementptr inbounds nuw i8, ptr %34, i64 12 + %55 = load i32, ptr %54, align 4 + %56 = icmp eq i32 %55, 1 + %. = select i1 %56, i32 -351010559, i32 257 + %.45 = select i1 %56, i8 112, i8 48 tail call fastcc void @ahci_set_signature(ptr noundef %6, i32 noundef %.) - %56 = getelementptr inbounds nuw i8, ptr %34, i64 665 - store i8 %.45, ptr %56, align 1 - %57 = getelementptr inbounds nuw i8, ptr %34, i64 649 - store i8 1, ptr %57, align 1 + %57 = getelementptr inbounds nuw i8, ptr %34, i64 665 + store i8 %.45, ptr %57, align 1 + %58 = getelementptr inbounds nuw i8, ptr %34, i64 649 + store i8 1, ptr %58, align 1 tail call fastcc void @ahci_init_d2h(ptr noundef %6) - br label %58 + br label %59 -58: ; preds = %trace_ahci_reset_port.exit, %50 +59: ; preds = %trace_ahci_reset_port.exit, %51 ret void } diff --git a/bench/qemu/optimized/job.ll b/bench/qemu/optimized/job.ll index dd00065ed26..89d0cfaea0d 100644 --- a/bench/qemu/optimized/job.ll +++ b/bench/qemu/optimized/job.ll @@ -237,61 +237,62 @@ define dso_local range(i32 -1, 1) i32 @job_apply_verb_locked(ptr noundef %0, i32 %10 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %6) #15 %11 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobVerb_lookup, i32 noundef %1) #15 %12 = zext nneg i32 %1 to i64 - %13 = zext i32 %6 to i64 - %14 = getelementptr inbounds nuw [8 x [11 x i8]], ptr @JobVerbTable, i64 0, i64 %12, i64 %13 - %15 = load i8, ptr %14, align 1, !range !4, !noundef !5 - %16 = trunc nuw i8 %15 to i1 - %17 = select i1 %16, ptr @.str.2, ptr @.str.3 - %18 = load i32, ptr @trace_events_enabled_count, align 4 - %.not.i.i = icmp eq i32 %18, 0 - br i1 %.not.i.i, label %trace_job_apply_verb.exit, label %19, !prof !6 - -19: ; preds = %9 - %20 = load i16, ptr @_TRACE_JOB_APPLY_VERB_DSTATE, align 2 - %.not8.i.i = icmp eq i16 %20, 0 - br i1 %.not8.i.i, label %trace_job_apply_verb.exit, label %21 - -21: ; preds = %19 - %22 = load i32, ptr @qemu_loglevel, align 4 - %23 = and i32 %22, 32768 - %.not9.i.i = icmp eq i32 %23, 0 - br i1 %.not9.i.i, label %trace_job_apply_verb.exit, label %24 + %13 = getelementptr inbounds nuw [8 x [11 x i8]], ptr @JobVerbTable, i64 0, i64 %12 + %14 = zext i32 %6 to i64 + %15 = getelementptr inbounds nuw [11 x i8], ptr %13, i64 0, i64 %14 + %16 = load i8, ptr %15, align 1, !range !4, !noundef !5 + %17 = trunc nuw i8 %16 to i1 + %18 = select i1 %17, ptr @.str.2, ptr @.str.3 + %19 = load i32, ptr @trace_events_enabled_count, align 4 + %.not.i.i = icmp eq i32 %19, 0 + br i1 %.not.i.i, label %trace_job_apply_verb.exit, label %20, !prof !6 -24: ; preds = %21 - %25 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 - %26 = trunc nuw i8 %25 to i1 - br i1 %26, label %27, label %33 +20: ; preds = %9 + %21 = load i16, ptr @_TRACE_JOB_APPLY_VERB_DSTATE, align 2 + %.not8.i.i = icmp eq i16 %21, 0 + br i1 %.not8.i.i, label %trace_job_apply_verb.exit, label %22 -27: ; preds = %24 +22: ; preds = %20 + %23 = load i32, ptr @qemu_loglevel, align 4 + %24 = and i32 %23, 32768 + %.not9.i.i = icmp eq i32 %24, 0 + br i1 %.not9.i.i, label %trace_job_apply_verb.exit, label %25 + +25: ; preds = %22 + %26 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 + %27 = trunc nuw i8 %26 to i1 + br i1 %27, label %28, label %34 + +28: ; preds = %25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, i8 0, i64 16, i1 false), !annotation !7 - %28 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #15 - %29 = tail call i32 @qemu_get_thread_id() #15 - %30 = load i64, ptr %4, align 8 - %31 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %32 = load i64, ptr %31, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.30, i32 noundef %29, i64 noundef %30, i64 noundef %32, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %17) #15 + %29 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #15 + %30 = tail call i32 @qemu_get_thread_id() #15 + %31 = load i64, ptr %4, align 8 + %32 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %33 = load i64, ptr %32, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.30, i32 noundef %30, i64 noundef %31, i64 noundef %33, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %18) #15 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #15 br label %trace_job_apply_verb.exit -33: ; preds = %24 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.31, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %17) #15 +34: ; preds = %25 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.31, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %18) #15 br label %trace_job_apply_verb.exit -trace_job_apply_verb.exit: ; preds = %9, %19, %21, %27, %33 - %34 = load i8, ptr %14, align 1, !range !4, !noundef !5 - %35 = trunc nuw i8 %34 to i1 - br i1 %35, label %40, label %36 +trace_job_apply_verb.exit: ; preds = %9, %20, %22, %28, %34 + %35 = load i8, ptr %15, align 1, !range !4, !noundef !5 + %36 = trunc nuw i8 %35 to i1 + br i1 %36, label %41, label %37 -36: ; preds = %trace_job_apply_verb.exit - %37 = load ptr, ptr %0, align 8 - %38 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %6) #15 - %39 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobVerb_lookup, i32 noundef %1) #15 - tail call void (ptr, ptr, i32, ptr, ptr, ...) @error_setg_internal(ptr noundef %2, ptr noundef nonnull @.str, i32 noundef 233, ptr noundef nonnull @__func__.job_apply_verb_locked, ptr noundef nonnull @.str.4, ptr noundef %37, ptr noundef %38, ptr noundef %39) #15 - br label %40 +37: ; preds = %trace_job_apply_verb.exit + %38 = load ptr, ptr %0, align 8 + %39 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %6) #15 + %40 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobVerb_lookup, i32 noundef %1) #15 + tail call void (ptr, ptr, i32, ptr, ptr, ...) @error_setg_internal(ptr noundef %2, ptr noundef nonnull @.str, i32 noundef 233, ptr noundef nonnull @__func__.job_apply_verb_locked, ptr noundef nonnull @.str.4, ptr noundef %38, ptr noundef %39, ptr noundef %40) #15 + br label %41 -40: ; preds = %trace_job_apply_verb.exit, %36 - %.0 = phi i32 [ -1, %36 ], [ 0, %trace_job_apply_verb.exit ] +41: ; preds = %trace_job_apply_verb.exit, %37 + %.0 = phi i32 [ -1, %37 ], [ 0, %trace_job_apply_verb.exit ] ret i32 %.0 } @@ -758,71 +759,72 @@ define internal fastcc void @job_state_transition_locked(ptr noundef %0, i32 nou %9 = getelementptr inbounds nuw i8, ptr %0, i64 188 %10 = load i32, ptr %9, align 4 %11 = zext i32 %5 to i64 - %12 = zext nneg i32 %1 to i64 - %13 = getelementptr inbounds nuw [11 x [11 x i8]], ptr @JobSTT, i64 0, i64 %11, i64 %12 - %14 = load i8, ptr %13, align 1, !range !4, !noundef !5 - %15 = trunc nuw i8 %14 to i1 - %16 = select i1 %15, ptr @.str.2, ptr @.str.33 - %17 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %5) #15 - %18 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %1) #15 - %19 = load i32, ptr @trace_events_enabled_count, align 4 - %.not.i.i = icmp eq i32 %19, 0 - br i1 %.not.i.i, label %trace_job_state_transition.exit, label %20, !prof !6 + %12 = getelementptr inbounds nuw [11 x [11 x i8]], ptr @JobSTT, i64 0, i64 %11 + %13 = zext nneg i32 %1 to i64 + %14 = getelementptr inbounds nuw [11 x i8], ptr %12, i64 0, i64 %13 + %15 = load i8, ptr %14, align 1, !range !4, !noundef !5 + %16 = trunc nuw i8 %15 to i1 + %17 = select i1 %16, ptr @.str.2, ptr @.str.33 + %18 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %5) #15 + %19 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %1) #15 + %20 = load i32, ptr @trace_events_enabled_count, align 4 + %.not.i.i = icmp eq i32 %20, 0 + br i1 %.not.i.i, label %trace_job_state_transition.exit, label %21, !prof !6 + +21: ; preds = %8 + %22 = load i16, ptr @_TRACE_JOB_STATE_TRANSITION_DSTATE, align 2 + %.not9.i.i = icmp eq i16 %22, 0 + br i1 %.not9.i.i, label %trace_job_state_transition.exit, label %23 -20: ; preds = %8 - %21 = load i16, ptr @_TRACE_JOB_STATE_TRANSITION_DSTATE, align 2 - %.not9.i.i = icmp eq i16 %21, 0 - br i1 %.not9.i.i, label %trace_job_state_transition.exit, label %22 +23: ; preds = %21 + %24 = load i32, ptr @qemu_loglevel, align 4 + %25 = and i32 %24, 32768 + %.not10.i.i = icmp eq i32 %25, 0 + br i1 %.not10.i.i, label %trace_job_state_transition.exit, label %26 -22: ; preds = %20 - %23 = load i32, ptr @qemu_loglevel, align 4 - %24 = and i32 %23, 32768 - %.not10.i.i = icmp eq i32 %24, 0 - br i1 %.not10.i.i, label %trace_job_state_transition.exit, label %25 +26: ; preds = %23 + %27 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 + %28 = trunc nuw i8 %27 to i1 + br i1 %28, label %29, label %35 -25: ; preds = %22 - %26 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 - %27 = trunc nuw i8 %26 to i1 - br i1 %27, label %28, label %34 - -28: ; preds = %25 +29: ; preds = %26 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false), !annotation !7 - %29 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #15 - %30 = tail call i32 @qemu_get_thread_id() #15 - %31 = load i64, ptr %3, align 8 - %32 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %33 = load i64, ptr %32, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.35, i32 noundef %30, i64 noundef %31, i64 noundef %33, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %16, ptr noundef %17, ptr noundef %18) #15 + %30 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #15 + %31 = tail call i32 @qemu_get_thread_id() #15 + %32 = load i64, ptr %3, align 8 + %33 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %34 = load i64, ptr %33, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.35, i32 noundef %31, i64 noundef %32, i64 noundef %34, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19) #15 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #15 br label %trace_job_state_transition.exit -34: ; preds = %25 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.36, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %16, ptr noundef %17, ptr noundef %18) #15 +35: ; preds = %26 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.36, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19) #15 br label %trace_job_state_transition.exit -trace_job_state_transition.exit: ; preds = %8, %20, %22, %28, %34 - %35 = load i8, ptr %13, align 1, !range !4, !noundef !5 - %36 = trunc nuw i8 %35 to i1 - br i1 %36, label %38, label %37 +trace_job_state_transition.exit: ; preds = %8, %21, %23, %29, %35 + %36 = load i8, ptr %14, align 1, !range !4, !noundef !5 + %37 = trunc nuw i8 %36 to i1 + br i1 %37, label %39, label %38 -37: ; preds = %trace_job_state_transition.exit +38: ; preds = %trace_job_state_transition.exit tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str, i32 noundef 215, ptr noundef nonnull @__PRETTY_FUNCTION__.job_state_transition_locked) #17 unreachable -38: ; preds = %trace_job_state_transition.exit +39: ; preds = %trace_job_state_transition.exit store i32 %1, ptr %4, align 4 - %39 = load ptr, ptr %0, align 8 - %40 = icmp eq ptr %39, null + %40 = load ptr, ptr %0, align 8 + %41 = icmp eq ptr %40, null %.not = icmp eq i32 %1, %5 - %or.cond = select i1 %40, i1 true, i1 %.not - br i1 %or.cond, label %42, label %41 + %or.cond = select i1 %41, i1 true, i1 %.not + br i1 %or.cond, label %43, label %42 -41: ; preds = %38 - tail call void @qapi_event_send_job_status_change(ptr noundef nonnull %39, i32 noundef %1) #15 - br label %42 +42: ; preds = %39 + tail call void @qapi_event_send_job_status_change(ptr noundef nonnull %40, i32 noundef %1) #15 + br label %43 -42: ; preds = %41, %38 +43: ; preds = %42, %39 ret void } diff --git a/bench/quantlib/optimized/exponentialfittinghestonengine.ll b/bench/quantlib/optimized/exponentialfittinghestonengine.ll index 7bf99aaddff..a1f68460a43 100644 --- a/bench/quantlib/optimized/exponentialfittinghestonengine.ll +++ b/bench/quantlib/optimized/exponentialfittinghestonengine.ll @@ -2560,6 +2560,7 @@ if.end345: ; preds = %if.then344, %land.l if.end349: ; preds = %cond.end300, %if.end345 %u.0 = phi double [ %167, %if.end345 ], [ %cond301, %cond.end300 ] %n.0 = phi i64 [ %n.1, %if.end345 ], [ 0, %cond.end300 ] + %arrayidx = getelementptr inbounds nuw [147 x [129 x double]], ptr @_ZN8QuantLib12_GLOBAL__N_17values4E, i64 0, i64 %n.0 br label %for.body for.cond.cleanup: ; preds = %invoke.cont359 @@ -2572,10 +2573,10 @@ for.body: ; preds = %if.end349, %invoke. %i.0452 = phi i64 [ 0, %if.end349 ], [ %add351, %invoke.cont359 ] %s.0451 = phi double [ 0.000000e+00, %if.end349 ], [ %170, %invoke.cont359 ] %add351 = add nuw nsw i64 %i.0452, 1 - %arrayidx352 = getelementptr inbounds nuw [147 x [129 x double]], ptr @_ZN8QuantLib12_GLOBAL__N_17values4E, i64 0, i64 %n.0, i64 %add351 + %arrayidx352 = getelementptr inbounds nuw [129 x double], ptr %arrayidx, i64 0, i64 %add351 %168 = load double, ptr %arrayidx352, align 8, !tbaa !77 %add354 = add nuw nsw i64 %i.0452, 65 - %arrayidx355 = getelementptr inbounds nuw [147 x [129 x double]], ptr @_ZN8QuantLib12_GLOBAL__N_17values4E, i64 0, i64 %n.0, i64 %add354 + %arrayidx355 = getelementptr inbounds nuw [129 x double], ptr %arrayidx, i64 0, i64 %add354 %169 = load double, ptr %arrayidx355, align 8, !tbaa !77 %mul357 = fmul double %u.0, %168 %call360 = invoke noundef double @_ZNK8QuantLib20AnalyticHestonEngine9AP_HelperclEd(ptr noundef nonnull align 8 dereferenceable(112) %helper, double noundef %mul357) diff --git a/bench/quantlib/optimized/perturbativebarrieroptionengine.ll b/bench/quantlib/optimized/perturbativebarrieroptionengine.ll index 16403323f85..9bc35156121 100644 --- a/bench/quantlib/optimized/perturbativebarrieroptionengine.ll +++ b/bench/quantlib/optimized/perturbativebarrieroptionengine.ll @@ -7151,18 +7151,20 @@ if.then8: ; preds = %if.then6 %1 = tail call double @llvm.fmuladd.f64(double %a, double %a, double %mul10) %neg = fmul double %1, -5.000000e-01 %idxprom15 = zext nneg i32 %.sink172 to i64 + %invariant.gep188 = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom15 %idxprom23 = zext nneg i32 %.sink172 to i64 + %invariant.gep190 = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom23 br label %for.cond12.preheader for.cond12.preheader: ; preds = %if.then8, %for.inc31 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 = phi i32 [ 1, %if.then8 ], [ %inc, %for.inc31 ] %.lcssa157159 = phi double [ 0.000000e+00, %if.then8 ], [ %8, %for.inc31 ] %idxprom = zext nneg i32 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 to i64 - %arrayidx16 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom, i64 %idxprom15 - %2 = load double, ptr %arrayidx16, align 8, !tbaa !107 + %gep189 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep188, i64 0, i64 %idxprom + %2 = load double, ptr %gep189, align 8, !tbaa !107 %idxprom21 = zext nneg i32 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 to i64 - %arrayidx24 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom21, i64 %idxprom23 - %3 = load double, ptr %arrayidx24, align 8, !tbaa !107 + %gep191 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep190, i64 0, i64 %idxprom21 + %3 = load double, ptr %gep191, align 8, !tbaa !107 br label %for.body14 for.body14: ; preds = %for.cond12.preheader, %for.body14 @@ -7419,15 +7421,17 @@ if.end104: ; preds = %_ZN8QuantLib12_GLOB %div105 = fmul double %call51, 5.000000e-01 %fneg135 = fneg double %39 %idxprom115 = zext nneg i32 %.sink172 to i64 + %invariant.gep = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom115 + %invariant.gep186 = getelementptr inbounds [4 x double], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom115 br label %for.cond109.preheader for.cond109.preheader: ; preds = %if.end104, %for.inc152 %.pre163 = phi i32 [ 1, %if.end104 ], [ %inc153, %for.inc152 ] %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE3BVN.promoted = phi double [ %57, %if.end104 ], [ %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE3BVN.promoted160, %for.inc152 ] %idxprom113 = zext nneg i32 %.pre163 to i64 - %arrayidx116 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2XL, i64 0, i64 %idxprom113, i64 %idxprom115 - %58 = load double, ptr %arrayidx116, align 8, !tbaa !107 - %arrayidx131 = getelementptr inbounds nuw [11 x [4 x double]], ptr @_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE2WL, i64 0, i64 %idxprom113, i64 %idxprom115 + %gep = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep, i64 0, i64 %idxprom113 + %58 = load double, ptr %gep, align 8, !tbaa !107 + %gep187 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep186, i64 0, i64 %idxprom113 br label %for.body111 for.body111: ; preds = %for.cond109.preheader, %for.inc149 @@ -7447,7 +7451,7 @@ for.body111: ; preds = %for.cond109.prehead if.then127: ; preds = %for.body111 %sub120 = fsub double 1.000000e+00, %square147 %square148 = fmul double %sub120, %sub120 - %61 = load double, ptr %arrayidx131, align 8, !tbaa !107 + %61 = load double, ptr %gep187, align 8, !tbaa !107 %mul132 = fmul double %div105, %61 %call133 = tail call double @exp(double noundef %div125) #31, !tbaa !108 %mul134 = fmul double %mul132, %call133 diff --git a/bench/ruby/optimized/cp949.ll b/bench/ruby/optimized/cp949.ll index d63d72d80c5..701d8c343ea 100644 --- a/bench/ruby/optimized/cp949.ll +++ b/bench/ruby/optimized/cp949.ll @@ -38,7 +38,7 @@ define internal range(i32 -2147483647, -2147483648) i32 @cp949_mbc_enc_len(ptr n 11: ; preds = %3 %12 = icmp eq i8 %8, -1 %13 = select i1 %12, i32 1, i32 -1 - br label %27 + br label %28 14: ; preds = %3 %15 = icmp eq ptr %4, %1 @@ -48,19 +48,20 @@ define internal range(i32 -2147483647, -2147483648) i32 @cp949_mbc_enc_len(ptr n %17 = getelementptr inbounds nuw [256 x i32], ptr @EncLen_CP949, i64 0, i64 %6 %18 = load i32, ptr %17, align 4, !tbaa !9 %19 = sub nsw i32 0, %18 - br label %27 + br label %28 20: ; preds = %14 - %21 = load i8, ptr %4, align 1, !tbaa !6 - %22 = zext i8 %21 to i64 - %23 = getelementptr inbounds nuw [2 x [256 x i8]], ptr @trans, i64 0, i64 %9, i64 %22 - %24 = load i8, ptr %23, align 1, !tbaa !6 - %25 = icmp eq i8 %24, -1 - %26 = select i1 %25, i32 2, i32 -1 - br label %27 - -27: ; preds = %20, %16, %11 - %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %26, %20 ] + %21 = getelementptr inbounds nuw [2 x [256 x i8]], ptr @trans, i64 0, i64 %9 + %22 = load i8, ptr %4, align 1, !tbaa !6 + %23 = zext i8 %22 to i64 + %24 = getelementptr inbounds nuw [256 x i8], ptr %21, i64 0, i64 %23 + %25 = load i8, ptr %24, align 1, !tbaa !6 + %26 = icmp eq i8 %25, -1 + %27 = select i1 %26, i32 2, i32 -1 + br label %28 + +28: ; preds = %20, %16, %11 + %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %27, %20 ] ret i32 %.0 } diff --git a/bench/ruby/optimized/euc_tw.ll b/bench/ruby/optimized/euc_tw.ll index df712d6bd0b..7407dc5532e 100644 --- a/bench/ruby/optimized/euc_tw.ll +++ b/bench/ruby/optimized/euc_tw.ll @@ -37,7 +37,7 @@ define internal range(i32 -2147483647, -2147483648) i32 @euctw_mbc_enc_len(ptr n 11: ; preds = %3 %12 = icmp eq i8 %8, -1 %13 = select i1 %12, i32 1, i32 -1 - br label %53 + br label %56 14: ; preds = %3 %15 = icmp eq ptr %4, %1 @@ -47,57 +47,60 @@ define internal range(i32 -2147483647, -2147483648) i32 @euctw_mbc_enc_len(ptr n %17 = getelementptr inbounds nuw [256 x i32], ptr @EncLen_EUCTW, i64 0, i64 %6 %18 = load i32, ptr %17, align 4, !tbaa !9 %19 = sub nsw i32 0, %18 - br label %53 + br label %56 20: ; preds = %14 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %22 = load i8, ptr %4, align 1, !tbaa !6 - %23 = zext i8 %22 to i64 - %24 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %9, i64 %23 - %25 = load i8, ptr %24, align 1, !tbaa !6 - %26 = sext i8 %25 to i64 - %27 = icmp slt i8 %25, 0 - br i1 %27, label %28, label %31 - -28: ; preds = %20 - %29 = icmp eq i8 %25, -1 - %30 = select i1 %29, i32 2, i32 -1 - br label %53 - -31: ; preds = %20 - %32 = icmp eq ptr %21, %1 - br i1 %32, label %53, label %33 - -33: ; preds = %31 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 3 - %35 = load i8, ptr %21, align 1, !tbaa !6 - %36 = zext i8 %35 to i64 - %37 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %26, i64 %36 - %38 = load i8, ptr %37, align 1, !tbaa !6 - %39 = sext i8 %38 to i64 - %40 = icmp slt i8 %38, 0 - br i1 %40, label %41, label %44 - -41: ; preds = %33 - %42 = icmp eq i8 %38, -1 - %43 = select i1 %42, i32 3, i32 -1 - br label %53 - -44: ; preds = %33 - %45 = icmp eq ptr %34, %1 - br i1 %45, label %53, label %46 - -46: ; preds = %44 - %47 = load i8, ptr %34, align 1, !tbaa !6 - %48 = zext i8 %47 to i64 - %49 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %39, i64 %48 - %50 = load i8, ptr %49, align 1, !tbaa !6 - %51 = icmp eq i8 %50, -1 - %52 = select i1 %51, i32 4, i32 -1 - br label %53 - -53: ; preds = %44, %31, %46, %41, %28, %16, %11 - %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %30, %28 ], [ %43, %41 ], [ %52, %46 ], [ -3, %31 ], [ -2, %44 ] + %21 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %9 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %23 = load i8, ptr %4, align 1, !tbaa !6 + %24 = zext i8 %23 to i64 + %25 = getelementptr inbounds nuw [256 x i8], ptr %21, i64 0, i64 %24 + %26 = load i8, ptr %25, align 1, !tbaa !6 + %27 = sext i8 %26 to i64 + %28 = icmp slt i8 %26, 0 + br i1 %28, label %29, label %32 + +29: ; preds = %20 + %30 = icmp eq i8 %26, -1 + %31 = select i1 %30, i32 2, i32 -1 + br label %56 + +32: ; preds = %20 + %33 = icmp eq ptr %22, %1 + br i1 %33, label %56, label %34 + +34: ; preds = %32 + %35 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %27 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 3 + %37 = load i8, ptr %22, align 1, !tbaa !6 + %38 = zext i8 %37 to i64 + %39 = getelementptr inbounds nuw [256 x i8], ptr %35, i64 0, i64 %38 + %40 = load i8, ptr %39, align 1, !tbaa !6 + %41 = sext i8 %40 to i64 + %42 = icmp slt i8 %40, 0 + br i1 %42, label %43, label %46 + +43: ; preds = %34 + %44 = icmp eq i8 %40, -1 + %45 = select i1 %44, i32 3, i32 -1 + br label %56 + +46: ; preds = %34 + %47 = icmp eq ptr %36, %1 + br i1 %47, label %56, label %48 + +48: ; preds = %46 + %49 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %41 + %50 = load i8, ptr %36, align 1, !tbaa !6 + %51 = zext i8 %50 to i64 + %52 = getelementptr inbounds nuw [256 x i8], ptr %49, i64 0, i64 %51 + %53 = load i8, ptr %52, align 1, !tbaa !6 + %54 = icmp eq i8 %53, -1 + %55 = select i1 %54, i32 4, i32 -1 + br label %56 + +56: ; preds = %46, %32, %48, %43, %29, %16, %11 + %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %31, %29 ], [ %45, %43 ], [ %55, %48 ], [ -3, %32 ], [ -2, %46 ] ret i32 %.0 } diff --git a/bench/ruby/optimized/regcomp.ll b/bench/ruby/optimized/regcomp.ll index c0f1717d9d4..3de15d00b17 100644 --- a/bench/ruby/optimized/regcomp.ll +++ b/bench/ruby/optimized/regcomp.ll @@ -11110,7 +11110,7 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou br label %21 21: ; preds = %.lr.ph14, %._crit_edge11 - %.113 = phi i64 [ 0, %.lr.ph14 ], [ %78, %._crit_edge11 ] + %.113 = phi i64 [ 0, %.lr.ph14 ], [ %77, %._crit_edge11 ] %.06912 = phi i32 [ 0, %.lr.ph14 ], [ %.170, %._crit_edge11 ] %22 = getelementptr i8, ptr %0, i64 %.113 br i1 %.not, label %27, label %23 @@ -11153,7 +11153,7 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou %wide.trip.count = zext nneg i32 %.170 to i64 br label %.lr.ph -44: ; preds = %64 +44: ; preds = %63 %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 %.preheader, label %.lr.ph, !llvm.loop !288 @@ -11185,15 +11185,16 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou %52 = zext i8 %51 to i64 %53 = getelementptr i8, ptr %3, i64 %52 store i8 %49, ptr %53, align 1, !tbaa !34 + %invariant.gep.us = getelementptr [18 x i8], ptr %6, i64 0, i64 %indvars.iv29 br label %54 54: ; preds = %.lr.ph8.us, %54 %indvars.iv24 = phi i64 [ 0, %.lr.ph8.us ], [ %indvars.iv.next25, %54 ] - %55 = getelementptr [13 x [18 x i8]], ptr %6, i64 0, i64 %indvars.iv24, i64 %indvars.iv29 - %56 = load i8, ptr %55, align 1, !tbaa !34 - %57 = zext i8 %56 to i64 - %58 = getelementptr i8, ptr %3, i64 %57 - store i8 %49, ptr %58, align 1, !tbaa !34 + %gep.us = getelementptr [13 x [18 x i8]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv24 + %55 = load i8, ptr %gep.us, align 1, !tbaa !34 + %56 = zext i8 %55 to i64 + %57 = getelementptr i8, ptr %3, i64 %56 + store i8 %49, ptr %57, align 1, !tbaa !34 %indvars.iv.next25 = add nuw nsw i64 %indvars.iv24, 1 %exitcond28.not = icmp eq i64 %indvars.iv.next25, %wide.trip.count27 br i1 %exitcond28.not, label %._crit_edge.us, label %54, !llvm.loop !289 @@ -11205,48 +11206,48 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou .lr.ph: ; preds = %.lr.ph.preheader, %44 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %44 ] - %59 = getelementptr [13 x %struct.OnigCaseFoldCodeItem], ptr %7, i64 0, i64 %indvars.iv - %60 = getelementptr inbounds nuw i8, ptr %59, i64 4 - %61 = load i32, ptr %60, align 4, !tbaa !164 - %.not74 = icmp eq i32 %61, 1 - br i1 %.not74, label %62, label %.loopexit - -62: ; preds = %.lr.ph - %63 = load i32, ptr %59, align 4, !tbaa !162 - %.not75 = icmp eq i32 %63, %.071 - br i1 %.not75, label %64, label %.loopexit - -64: ; preds = %62 - %65 = load ptr, ptr %20, align 8, !tbaa !167 - %66 = getelementptr inbounds nuw i8, ptr %59, i64 8 - %67 = load i32, ptr %66, align 4, !tbaa !7 - %68 = getelementptr [13 x [18 x i8]], ptr %6, i64 0, i64 %indvars.iv - %69 = call i32 %65(i32 noundef %67, ptr noundef %68, ptr noundef nonnull %9) #20 - %.not76 = icmp eq i32 %69, %.071 + %58 = getelementptr [13 x %struct.OnigCaseFoldCodeItem], ptr %7, i64 0, i64 %indvars.iv + %59 = getelementptr inbounds nuw i8, ptr %58, i64 4 + %60 = load i32, ptr %59, align 4, !tbaa !164 + %.not74 = icmp eq i32 %60, 1 + br i1 %.not74, label %61, label %.loopexit + +61: ; preds = %.lr.ph + %62 = load i32, ptr %58, align 4, !tbaa !162 + %.not75 = icmp eq i32 %62, %.071 + br i1 %.not75, label %63, label %.loopexit + +63: ; preds = %61 + %64 = load ptr, ptr %20, align 8, !tbaa !167 + %65 = getelementptr inbounds nuw i8, ptr %58, i64 8 + %66 = load i32, ptr %65, align 4, !tbaa !7 + %67 = getelementptr [13 x [18 x i8]], ptr %6, i64 0, i64 %indvars.iv + %68 = call i32 %64(i32 noundef %66, ptr noundef %67, ptr noundef nonnull %9) #20 + %.not76 = icmp eq i32 %68, %.071 br i1 %.not76, label %44, label %.loopexit .lr.ph10.split: ; preds = %.lr.ph10.split.preheader, %.lr.ph10.split %indvars.iv19 = phi i64 [ 0, %.lr.ph10.split.preheader ], [ %indvars.iv.next20, %.lr.ph10.split ] - %70 = add i64 %.113, %indvars.iv19 - %71 = sub i64 %12, %70 - %72 = trunc i64 %71 to i8 - %73 = getelementptr i8, ptr %22, i64 %indvars.iv19 - %74 = load i8, ptr %73, align 1, !tbaa !34 - %75 = zext i8 %74 to i64 - %76 = getelementptr i8, ptr %3, i64 %75 - store i8 %72, ptr %76, align 1, !tbaa !34 + %69 = add i64 %.113, %indvars.iv19 + %70 = sub i64 %12, %69 + %71 = trunc i64 %70 to i8 + %72 = getelementptr i8, ptr %22, i64 %indvars.iv19 + %73 = load i8, ptr %72, align 1, !tbaa !34 + %74 = zext i8 %73 to i64 + %75 = getelementptr i8, ptr %3, i64 %74 + store i8 %71, ptr %75, align 1, !tbaa !34 %indvars.iv.next20 = add nuw nsw i64 %indvars.iv19, 1 %exitcond23.not = icmp eq i64 %indvars.iv.next20, %wide.trip.count22 br i1 %exitcond23.not, label %._crit_edge11, label %.lr.ph10.split, !llvm.loop !290 ._crit_edge11: ; preds = %.lr.ph10.split, %._crit_edge.us, %.preheader.thread, %.preheader - %77 = sext i32 %.071 to i64 - %78 = add nsw i64 %.113, %77 - %79 = icmp ult i64 %78, %12 - br i1 %79, label %21, label %.loopexit, !llvm.loop !291 + %76 = sext i32 %.071 to i64 + %77 = add nsw i64 %.113, %76 + %78 = icmp ult i64 %77, %12 + br i1 %78, label %21, label %.loopexit, !llvm.loop !291 -.loopexit: ; preds = %._crit_edge11, %64, %.lr.ph, %62, %.preheader4, %5 - %.0 = phi i32 [ -6, %5 ], [ 0, %.preheader4 ], [ 1, %62 ], [ 1, %.lr.ph ], [ 1, %64 ], [ 0, %._crit_edge11 ] +.loopexit: ; preds = %._crit_edge11, %63, %.lr.ph, %61, %.preheader4, %5 + %.0 = phi i32 [ -6, %5 ], [ 0, %.preheader4 ], [ 1, %61 ], [ 1, %.lr.ph ], [ 1, %63 ], [ 0, %._crit_edge11 ] call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %7) #20 call void @llvm.lifetime.end.p0(i64 234, ptr nonnull %6) #20 ret i32 %.0 diff --git a/bench/sdl/optimized/SDL_alsa_audio.ll b/bench/sdl/optimized/SDL_alsa_audio.ll index c4c17c0ce0e..c19a45782c4 100644 --- a/bench/sdl/optimized/SDL_alsa_audio.ll +++ b/bench/sdl/optimized/SDL_alsa_audio.ll @@ -2243,10 +2243,9 @@ define internal fastcc range(i32 -1, 2) i32 @alsa_chmap_cfg(ptr noundef nonnull ._crit_edge.i.i: ; preds = %25 %31 = zext i32 %28 to i64 - %32 = shl nuw nsw i64 %31, 5 - %scevgep.i.i = getelementptr i8, ptr @sdl_channel_maps, i64 %32 + %32 = getelementptr inbounds nuw [9 x [8 x i32]], ptr @sdl_channel_maps, i64 0, i64 %31 %33 = shl nuw nsw i64 %31, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 16 %scevgep.i.i, i64 %33, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr nonnull align 16 %32, i64 %33, i1 false) %34 = load ptr, ptr %.03857.i.i, align 8 %35 = getelementptr inbounds nuw i8, ptr %34, i64 8 %36 = icmp eq i32 %28, 6 @@ -2338,12 +2337,12 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 .loopexit.i: ; preds = %62 %.pre.i = load ptr, ptr %11, align 8 - %.pre23.i = load ptr, ptr %.pre.i, align 8 - %.not72.i.i = icmp eq ptr %.pre23.i, null + %.pre22.i = load ptr, ptr %.pre.i, align 8 + %.not72.i.i = icmp eq ptr %.pre22.i, null br i1 %.not72.i.i, label %.thread48, label %.lr.ph75.i.i .lr.ph75.i.i: ; preds = %.loopexit.i, %110 - %66 = phi ptr [ %112, %110 ], [ %.pre23.i, %.loopexit.i ] + %66 = phi ptr [ %112, %110 ], [ %.pre22.i, %.loopexit.i ] %.04573.i.i = phi ptr [ %111, %110 ], [ %.pre.i, %.loopexit.i ] %67 = getelementptr inbounds nuw i8, ptr %66, i64 4 %68 = load i32, ptr %67, align 4 @@ -2368,14 +2367,13 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 .thread82.i.i: ; preds = %72 %76 = load ptr, ptr %.04573.i.i, align 8 %77 = getelementptr inbounds nuw i8, ptr %76, i64 8 - br label %alsa_chmap_has_duplicate_position.exit.i16.i + br label %alsa_chmap_has_duplicate_position.exit.i15.i ._crit_edge.i5.i: ; preds = %72 %78 = zext i32 %75 to i64 - %79 = shl nuw nsw i64 %78, 5 - %scevgep.i6.i = getelementptr i8, ptr @sdl_channel_maps, i64 %79 + %79 = getelementptr inbounds nuw [9 x [8 x i32]], ptr @sdl_channel_maps, i64 0, i64 %78 %80 = shl nuw nsw i64 %78, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 16 %scevgep.i6.i, i64 %80, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr nonnull align 16 %79, i64 %80, i1 false) %81 = load ptr, ptr %.04573.i.i, align 8 %82 = getelementptr inbounds nuw i8, ptr %81, i64 8 %83 = icmp eq i32 %75, 6 @@ -2383,53 +2381,53 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 84: ; preds = %._crit_edge.i5.i call fastcc void @sdl_6chans_set_rear_or_side_channels_from_alsa_6chans(ptr noundef %17, ptr noundef nonnull %82) - %.pre.i19.i = load i32, ptr %16, align 4 + %.pre.i18.i = load i32, ptr %16, align 4 br label %85 85: ; preds = %84, %._crit_edge.i5.i - %86 = phi i32 [ %.pre.i19.i, %84 ], [ %75, %._crit_edge.i5.i ] + %86 = phi i32 [ %.pre.i18.i, %84 ], [ %75, %._crit_edge.i5.i ] %87 = icmp ult i32 %86, 2 - br i1 %87, label %alsa_chmap_has_duplicate_position.exit.i16.i, label %.lr.ph.i.preheader.i7.i + br i1 %87, label %alsa_chmap_has_duplicate_position.exit.i15.i, label %.lr.ph.i.preheader.i6.i -.lr.ph.i.preheader.i7.i: ; preds = %85 - %zext.i8.i = zext i32 %86 to i64 - br label %.lr.ph.i.i9.i +.lr.ph.i.preheader.i6.i: ; preds = %85 + %zext.i7.i = zext i32 %86 to i64 + br label %.lr.ph.i.i8.i -.lr.ph.i.i9.i: ; preds = %._crit_edge.i.i14.i, %.lr.ph.i.preheader.i7.i - %indvars.iv.i.i10.i = phi i64 [ %indvars.iv.next.i.i15.i, %._crit_edge.i.i14.i ], [ 1, %.lr.ph.i.preheader.i7.i ] - %88 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i.i10.i +.lr.ph.i.i8.i: ; preds = %._crit_edge.i.i13.i, %.lr.ph.i.preheader.i6.i + %indvars.iv.i.i9.i = phi i64 [ %indvars.iv.next.i.i14.i, %._crit_edge.i.i13.i ], [ 1, %.lr.ph.i.preheader.i6.i ] + %88 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i.i9.i %89 = load i32, ptr %88, align 4 br label %91 90: ; preds = %91 - %indvars.iv.next.i12.i = add nuw nsw i64 %indvars.iv.i11.i, 1 - %.not17.i.i13.i = icmp eq i64 %indvars.iv.i.i10.i, %indvars.iv.next.i12.i - br i1 %.not17.i.i13.i, label %._crit_edge.i.i14.i, label %91, !llvm.loop !18 + %indvars.iv.next.i11.i = add nuw nsw i64 %indvars.iv.i10.i, 1 + %.not17.i.i12.i = icmp eq i64 %indvars.iv.i.i9.i, %indvars.iv.next.i11.i + br i1 %.not17.i.i12.i, label %._crit_edge.i.i13.i, label %91, !llvm.loop !18 -91: ; preds = %90, %.lr.ph.i.i9.i - %indvars.iv.i11.i = phi i64 [ %indvars.iv.next.i12.i, %90 ], [ 0, %.lr.ph.i.i9.i ] - %92 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i11.i +91: ; preds = %90, %.lr.ph.i.i8.i + %indvars.iv.i10.i = phi i64 [ %indvars.iv.next.i11.i, %90 ], [ 0, %.lr.ph.i.i8.i ] + %92 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i10.i %93 = load i32, ptr %92, align 4 %94 = icmp eq i32 %93, %89 - br i1 %94, label %alsa_chmap_has_duplicate_position.exit.thread.i18.i, label %90 + br i1 %94, label %alsa_chmap_has_duplicate_position.exit.thread.i17.i, label %90 -alsa_chmap_has_duplicate_position.exit.thread.i18.i: ; preds = %91 +alsa_chmap_has_duplicate_position.exit.thread.i17.i: ; preds = %91 call void (i32, ptr, ...) @SDL_LogDebug_REAL(i32 noundef 4, ptr noundef nonnull @.str.108) #8 - br label %.thread.i17.i + br label %.thread.i16.i -._crit_edge.i.i14.i: ; preds = %90 - %indvars.iv.next.i.i15.i = add nuw nsw i64 %indvars.iv.i.i10.i, 1 - %95 = icmp eq i64 %indvars.iv.next.i.i15.i, %zext.i8.i - br i1 %95, label %alsa_chmap_has_duplicate_position.exit.i16.i, label %.lr.ph.i.i9.i, !llvm.loop !19 +._crit_edge.i.i13.i: ; preds = %90 + %indvars.iv.next.i.i14.i = add nuw nsw i64 %indvars.iv.i.i9.i, 1 + %95 = icmp eq i64 %indvars.iv.next.i.i14.i, %zext.i7.i + br i1 %95, label %alsa_chmap_has_duplicate_position.exit.i15.i, label %.lr.ph.i.i8.i, !llvm.loop !19 -alsa_chmap_has_duplicate_position.exit.i16.i: ; preds = %._crit_edge.i.i14.i, %85, %.thread82.i.i - %96 = phi ptr [ %77, %.thread82.i.i ], [ %82, %85 ], [ %82, %._crit_edge.i.i14.i ] +alsa_chmap_has_duplicate_position.exit.i15.i: ; preds = %._crit_edge.i.i13.i, %85, %.thread82.i.i + %96 = phi ptr [ %77, %.thread82.i.i ], [ %82, %85 ], [ %82, %._crit_edge.i.i13.i ] call void (i32, ptr, ...) @SDL_LogDebug_REAL(i32 noundef 4, ptr noundef nonnull @.str.107) #8 %97 = load i32, ptr %16, align 4 %.not5264.i.i = icmp eq i32 %97, 0 br i1 %.not5264.i.i, label %._crit_edge68.split.thread.i.i, label %.preheader.preheader.i.i -.preheader.preheader.i.i: ; preds = %alsa_chmap_has_duplicate_position.exit.i16.i +.preheader.preheader.i.i: ; preds = %alsa_chmap_has_duplicate_position.exit.i15.i %98 = zext i32 %97 to i64 br label %.preheader.i.i @@ -2442,7 +2440,7 @@ alsa_chmap_has_duplicate_position.exit.i16.i: ; preds = %._crit_edge.i.i14.i ._crit_edge68.split.i.i: ; preds = %..loopexit_crit_edge.i.i %101 = icmp eq i32 %.1.i.i, %97 - br i1 %101, label %._crit_edge68.split.thread.i.i, label %.thread.i17.i + br i1 %101, label %._crit_edge68.split.thread.i.i, label %.thread.i16.i 102: ; preds = %103 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 @@ -2466,16 +2464,16 @@ alsa_chmap_has_duplicate_position.exit.i16.i: ; preds = %._crit_edge.i.i14.i %.not52.i.i = icmp eq i64 %indvars.iv.next80.i.i, %98 br i1 %.not52.i.i, label %._crit_edge68.split.i.i, label %.preheader.i.i, !llvm.loop !23 -.thread.i17.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.thread.i18.i +.thread.i16.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.thread.i17.i call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #8 br label %110 -._crit_edge68.split.thread.i.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.i16.i +._crit_edge68.split.thread.i.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.i15.i %109 = call fastcc i32 @alsa_chmap_install(ptr noundef nonnull %0, ptr noundef nonnull %17) call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #8 br label %alsa_chmap_cfg_ordered.exit -110: ; preds = %.thread.i17.i, %70, %.lr.ph75.i.i +110: ; preds = %.thread.i16.i, %70, %.lr.ph75.i.i %111 = getelementptr inbounds nuw i8, ptr %.04573.i.i, i64 8 %112 = load ptr, ptr %111, align 8 %.not.i3.i = icmp eq ptr %112, null @@ -2533,10 +2531,9 @@ alsa_chmap_cfg_ordered.exit.thread: ; preds = %110 ._crit_edge.i: ; preds = %124 %130 = zext i32 %127 to i64 - %131 = shl nuw nsw i64 %130, 5 - %scevgep.i = getelementptr i8, ptr @sdl_channel_maps, i64 %131 + %131 = getelementptr inbounds nuw [9 x [8 x i32]], ptr @sdl_channel_maps, i64 0, i64 %130 %132 = shl nuw nsw i64 %130, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 16 %scevgep.i, i64 %132, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr nonnull align 16 %131, i64 %132, i1 false) %133 = load ptr, ptr %.04677.i, align 8 %134 = getelementptr inbounds nuw i8, ptr %133, i64 8 %135 = icmp eq i32 %127, 6 diff --git a/bench/sdl/optimized/SDL_audioresample.ll b/bench/sdl/optimized/SDL_audioresample.ll index d31e476c78b..8965501a9aa 100644 --- a/bench/sdl/optimized/SDL_audioresample.ll +++ b/bench/sdl/optimized/SDL_audioresample.ll @@ -16,7 +16,7 @@ define hidden void @SDL_SetupAudioResampler() local_unnamed_addr #0 { %1 = alloca [24 x float], align 16 %2 = alloca [121 x float], align 16 %3 = tail call zeroext i1 @SDL_ShouldInit_REAL(ptr noundef nonnull @SDL_SetupAudioResampler.init) #8 - br i1 %3, label %.preheader, label %101 + br i1 %3, label %.preheader, label %103 .preheader: ; preds = %0, %.preheader %.016.i.i.i = phi float [ %7, %.preheader ], [ 1.000000e+00, %0 ] @@ -102,95 +102,97 @@ BesselI0.exit32.i.i: ; preds = %28 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 121 br i1 %exitcond.not.i.i, label %.preheader.i.i, label %18, !llvm.loop !6 -.preheader.i.i: ; preds = %BesselI0.exit32.i.i, %98 - %indvars.iv46.i.i = phi i64 [ %indvars.iv.next47.i.i, %98 ], [ 0, %BesselI0.exit32.i.i ] - %51 = sub nuw nsw i64 7, %indvars.iv46.i.i - br label %52 - -52: ; preds = %52, %.preheader.i.i - %indvars.iv42.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next43.i.i, %52 ] - %53 = shl nuw nsw i64 %indvars.iv42.i.i, 3 - %54 = add nuw nsw i64 %53, %indvars.iv46.i.i - %55 = mul nuw nsw i64 %54, 3 - %56 = getelementptr inbounds nuw [121 x float], ptr %2, i64 0, i64 %55 - %57 = sub nuw nsw i64 4, %indvars.iv42.i.i - %58 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %indvars.iv46.i.i, i64 %57 - %59 = add nuw nsw i64 %indvars.iv42.i.i, 5 - %60 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %51, i64 %59 - %61 = load float, ptr %56, align 4 - %62 = getelementptr inbounds nuw i8, ptr %56, i64 4 - %63 = load float, ptr %62, align 4 - %64 = getelementptr inbounds nuw i8, ptr %56, i64 8 +.preheader.i.i: ; preds = %BesselI0.exit32.i.i, %100 + %indvars.iv46.i.i = phi i64 [ %indvars.iv.next47.i.i, %100 ], [ 0, %BesselI0.exit32.i.i ] + %51 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %indvars.iv46.i.i + %52 = sub nuw nsw i64 7, %indvars.iv46.i.i + %53 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %52 + br label %54 + +54: ; preds = %54, %.preheader.i.i + %indvars.iv42.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next43.i.i, %54 ] + %55 = shl nuw nsw i64 %indvars.iv42.i.i, 3 + %56 = add nuw nsw i64 %55, %indvars.iv46.i.i + %57 = mul nuw nsw i64 %56, 3 + %58 = getelementptr inbounds nuw [121 x float], ptr %2, i64 0, i64 %57 + %59 = sub nuw nsw i64 4, %indvars.iv42.i.i + %60 = getelementptr inbounds nuw [10 x %union.Cubic], ptr %51, i64 0, i64 %59 + %61 = add nuw nsw i64 %indvars.iv42.i.i, 5 + %62 = getelementptr inbounds nuw [10 x %union.Cubic], ptr %53, i64 0, i64 %61 + %63 = load float, ptr %58, align 4 + %64 = getelementptr inbounds nuw i8, ptr %58, i64 4 %65 = load float, ptr %64, align 4 - %66 = getelementptr inbounds nuw i8, ptr %56, i64 12 + %66 = getelementptr inbounds nuw i8, ptr %58, i64 8 %67 = load float, ptr %66, align 4 - store float %61, ptr %58, align 16 - %68 = fmul float %63, 9.000000e+00 - %69 = tail call float @llvm.fmuladd.f32(float %61, float -5.500000e+00, float %68) - %70 = tail call float @llvm.fmuladd.f32(float %65, float -4.500000e+00, float %69) - %71 = fadd float %67, %70 - %72 = getelementptr inbounds nuw i8, ptr %58, i64 4 - store float %71, ptr %72, align 4 - %73 = fmul float %63, -2.250000e+01 - %74 = tail call float @llvm.fmuladd.f32(float %61, float 9.000000e+00, float %73) - %75 = tail call float @llvm.fmuladd.f32(float %65, float 1.800000e+01, float %74) - %76 = tail call float @llvm.fmuladd.f32(float %67, float -4.500000e+00, float %75) - %77 = getelementptr inbounds nuw i8, ptr %58, i64 8 - store float %76, ptr %77, align 8 - %78 = fmul float %63, 1.350000e+01 - %79 = tail call float @llvm.fmuladd.f32(float %61, float -4.500000e+00, float %78) - %80 = tail call float @llvm.fmuladd.f32(float %65, float -1.350000e+01, float %79) - %81 = tail call float @llvm.fmuladd.f32(float %67, float 4.500000e+00, float %80) - %82 = getelementptr inbounds nuw i8, ptr %58, i64 12 - store float %81, ptr %82, align 4 - store float %67, ptr %60, align 16 - %83 = fmul float %65, 9.000000e+00 - %84 = tail call float @llvm.fmuladd.f32(float %67, float -5.500000e+00, float %83) - %85 = tail call float @llvm.fmuladd.f32(float %63, float -4.500000e+00, float %84) - %86 = fadd float %61, %85 - %87 = getelementptr inbounds nuw i8, ptr %60, i64 4 - store float %86, ptr %87, align 4 - %88 = fmul float %65, -2.250000e+01 - %89 = tail call float @llvm.fmuladd.f32(float %67, float 9.000000e+00, float %88) - %90 = tail call float @llvm.fmuladd.f32(float %63, float 1.800000e+01, float %89) - %91 = tail call float @llvm.fmuladd.f32(float %61, float -4.500000e+00, float %90) - %92 = getelementptr inbounds nuw i8, ptr %60, i64 8 - store float %91, ptr %92, align 8 - %93 = fmul float %65, 1.350000e+01 - %94 = tail call float @llvm.fmuladd.f32(float %67, float -4.500000e+00, float %93) - %95 = tail call float @llvm.fmuladd.f32(float %63, float -1.350000e+01, float %94) - %96 = tail call float @llvm.fmuladd.f32(float %61, float 4.500000e+00, float %95) - %97 = getelementptr inbounds nuw i8, ptr %60, i64 12 - store float %96, ptr %97, align 4 + %68 = getelementptr inbounds nuw i8, ptr %58, i64 12 + %69 = load float, ptr %68, align 4 + store float %63, ptr %60, align 16 + %70 = fmul float %65, 9.000000e+00 + %71 = tail call float @llvm.fmuladd.f32(float %63, float -5.500000e+00, float %70) + %72 = tail call float @llvm.fmuladd.f32(float %67, float -4.500000e+00, float %71) + %73 = fadd float %69, %72 + %74 = getelementptr inbounds nuw i8, ptr %60, i64 4 + store float %73, ptr %74, align 4 + %75 = fmul float %65, -2.250000e+01 + %76 = tail call float @llvm.fmuladd.f32(float %63, float 9.000000e+00, float %75) + %77 = tail call float @llvm.fmuladd.f32(float %67, float 1.800000e+01, float %76) + %78 = tail call float @llvm.fmuladd.f32(float %69, float -4.500000e+00, float %77) + %79 = getelementptr inbounds nuw i8, ptr %60, i64 8 + store float %78, ptr %79, align 8 + %80 = fmul float %65, 1.350000e+01 + %81 = tail call float @llvm.fmuladd.f32(float %63, float -4.500000e+00, float %80) + %82 = tail call float @llvm.fmuladd.f32(float %67, float -1.350000e+01, float %81) + %83 = tail call float @llvm.fmuladd.f32(float %69, float 4.500000e+00, float %82) + %84 = getelementptr inbounds nuw i8, ptr %60, i64 12 + store float %83, ptr %84, align 4 + store float %69, ptr %62, align 16 + %85 = fmul float %67, 9.000000e+00 + %86 = tail call float @llvm.fmuladd.f32(float %69, float -5.500000e+00, float %85) + %87 = tail call float @llvm.fmuladd.f32(float %65, float -4.500000e+00, float %86) + %88 = fadd float %63, %87 + %89 = getelementptr inbounds nuw i8, ptr %62, i64 4 + store float %88, ptr %89, align 4 + %90 = fmul float %67, -2.250000e+01 + %91 = tail call float @llvm.fmuladd.f32(float %69, float 9.000000e+00, float %90) + %92 = tail call float @llvm.fmuladd.f32(float %65, float 1.800000e+01, float %91) + %93 = tail call float @llvm.fmuladd.f32(float %63, float -4.500000e+00, float %92) + %94 = getelementptr inbounds nuw i8, ptr %62, i64 8 + store float %93, ptr %94, align 8 + %95 = fmul float %67, 1.350000e+01 + %96 = tail call float @llvm.fmuladd.f32(float %69, float -4.500000e+00, float %95) + %97 = tail call float @llvm.fmuladd.f32(float %65, float -1.350000e+01, float %96) + %98 = tail call float @llvm.fmuladd.f32(float %63, float 4.500000e+00, float %97) + %99 = getelementptr inbounds nuw i8, ptr %62, i64 12 + store float %98, ptr %99, align 4 %indvars.iv.next43.i.i = add nuw nsw i64 %indvars.iv42.i.i, 1 %exitcond45.not.i.i = icmp eq i64 %indvars.iv.next43.i.i, 5 - br i1 %exitcond45.not.i.i, label %98, label %52, !llvm.loop !7 + br i1 %exitcond45.not.i.i, label %100, label %54, !llvm.loop !7 -98: ; preds = %52 +100: ; preds = %54 %indvars.iv.next47.i.i = add nuw nsw i64 %indvars.iv46.i.i, 1 %exitcond49.not.i.i = icmp eq i64 %indvars.iv.next47.i.i, 8 br i1 %exitcond49.not.i.i, label %GenerateResamplerFilter.exit.i, label %.preheader.i.i, !llvm.loop !8 -GenerateResamplerFilter.exit.i: ; preds = %98 +GenerateResamplerFilter.exit.i: ; preds = %100 call void @llvm.lifetime.end.p0(i64 484, ptr nonnull %2) #8 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %1) #8 - br label %99 + br label %101 -99: ; preds = %99, %GenerateResamplerFilter.exit.i - %indvars.iv.i = phi i64 [ 0, %GenerateResamplerFilter.exit.i ], [ %indvars.iv.next.i, %99 ] - %100 = getelementptr inbounds nuw [8 x ptr], ptr @ResampleFrame, i64 0, i64 %indvars.iv.i - store ptr @ResampleFrame_Generic, ptr %100, align 8 +101: ; preds = %101, %GenerateResamplerFilter.exit.i + %indvars.iv.i = phi i64 [ 0, %GenerateResamplerFilter.exit.i ], [ %indvars.iv.next.i, %101 ] + %102 = getelementptr inbounds nuw [8 x ptr], ptr @ResampleFrame, i64 0, i64 %indvars.iv.i + store ptr @ResampleFrame_Generic, ptr %102, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 8 - br i1 %exitcond.not.i, label %SetupAudioResampler.exit, label %99, !llvm.loop !9 + br i1 %exitcond.not.i, label %SetupAudioResampler.exit, label %101, !llvm.loop !9 -SetupAudioResampler.exit: ; preds = %99 +SetupAudioResampler.exit: ; preds = %101 store ptr @ResampleFrame_Mono, ptr @ResampleFrame, align 16 store ptr @ResampleFrame_Stereo, ptr getelementptr inbounds nuw (i8, ptr @ResampleFrame, i64 8), align 8 tail call void @SDL_SetInitialized_REAL(ptr noundef nonnull @SDL_SetupAudioResampler.init, i1 noundef zeroext true) #8 - br label %101 + br label %103 -101: ; preds = %SetupAudioResampler.exit, %0 +103: ; preds = %SetupAudioResampler.exit, %0 ret void } diff --git a/bench/sdl/optimized/SDL_gamepad.ll b/bench/sdl/optimized/SDL_gamepad.ll index 4e401dea0df..1b652605960 100644 --- a/bench/sdl/optimized/SDL_gamepad.ll +++ b/bench/sdl/optimized/SDL_gamepad.ll @@ -677,19 +677,19 @@ define hidden void @SDL_GamepadSensorWatcher(i64 noundef %0, i32 noundef %1, i64 %.not27 = icmp eq ptr %.026, null br i1 %.not27, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %5, %49 - %.028 = phi ptr [ %.0, %49 ], [ %.026, %5 ] +.lr.ph: ; preds = %5, %51 + %.028 = phi ptr [ %.0, %51 ], [ %.026, %5 ] %8 = load ptr, ptr %.028, align 8 %9 = getelementptr inbounds nuw i8, ptr %8, i64 248 %10 = load ptr, ptr %9, align 8 %.not17 = icmp eq ptr %10, null - br i1 %.not17, label %28, label %11 + br i1 %.not17, label %29, label %11 11: ; preds = %.lr.ph %12 = getelementptr inbounds nuw i8, ptr %8, i64 244 %13 = load i32, ptr %12, align 4 %14 = icmp eq i32 %13, %1 - br i1 %14, label %15, label %28 + br i1 %14, label %15, label %29 15: ; preds = %11 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #10 @@ -697,93 +697,95 @@ define hidden void @SDL_GamepadSensorWatcher(i64 noundef %0, i32 noundef %1, i64 %16 = getelementptr inbounds nuw i8, ptr %8, i64 272 br label %17 -17: ; preds = %26, %15 - %indvars.iv16.i = phi i64 [ 0, %15 ], [ %indvars.iv.next17.i, %26 ] +17: ; preds = %27, %15 + %indvars.iv16.i = phi i64 [ 0, %15 ], [ %indvars.iv.next17.i, %27 ] %18 = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv16.i store float 0.000000e+00, ptr %18, align 4 - br label %19 + %19 = getelementptr inbounds nuw [3 x [3 x float]], ptr %16, i64 0, i64 %indvars.iv16.i + br label %20 -19: ; preds = %19, %17 - %indvars.iv.i = phi i64 [ 0, %17 ], [ %indvars.iv.next.i, %19 ] - %20 = phi float [ 0.000000e+00, %17 ], [ %25, %19 ] - %21 = getelementptr inbounds nuw [3 x [3 x float]], ptr %16, i64 0, i64 %indvars.iv16.i, i64 %indvars.iv.i - %22 = load float, ptr %21, align 4 - %23 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i - %24 = load float, ptr %23, align 4 - %25 = call float @llvm.fmuladd.f32(float %22, float %24, float %20) - store float %25, ptr %18, align 4 +20: ; preds = %20, %17 + %indvars.iv.i = phi i64 [ 0, %17 ], [ %indvars.iv.next.i, %20 ] + %21 = phi float [ 0.000000e+00, %17 ], [ %26, %20 ] + %22 = getelementptr inbounds nuw [3 x float], ptr %19, i64 0, i64 %indvars.iv.i + %23 = load float, ptr %22, align 4 + %24 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i + %25 = load float, ptr %24, align 4 + %26 = call float @llvm.fmuladd.f32(float %23, float %25, float %21) + store float %26, ptr %18, align 4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %26, label %19, !llvm.loop !7 + br i1 %exitcond.not.i, label %27, label %20, !llvm.loop !7 -26: ; preds = %19 +27: ; preds = %20 %indvars.iv.next17.i = add nuw nsw i64 %indvars.iv16.i, 1 %exitcond19.not.i = icmp eq i64 %indvars.iv.next17.i, 3 br i1 %exitcond19.not.i, label %AdjustSensorOrientation.exit, label %17, !llvm.loop !8 -AdjustSensorOrientation.exit: ; preds = %26 - %27 = load ptr, ptr %.028, align 8 - call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %27, i32 noundef 1, i64 noundef %2, ptr noundef nonnull %6, i32 noundef 3) #10 +AdjustSensorOrientation.exit: ; preds = %27 + %28 = load ptr, ptr %.028, align 8 + call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %28, i32 noundef 1, i64 noundef %2, ptr noundef nonnull %6, i32 noundef 3) #10 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #10 %.pre = load ptr, ptr %.028, align 8 - br label %28 + br label %29 -28: ; preds = %AdjustSensorOrientation.exit, %11, %.lr.ph - %29 = phi ptr [ %.pre, %AdjustSensorOrientation.exit ], [ %8, %11 ], [ %8, %.lr.ph ] - %30 = getelementptr inbounds nuw i8, ptr %29, i64 264 - %31 = load ptr, ptr %30, align 8 - %.not18 = icmp eq ptr %31, null - br i1 %.not18, label %49, label %32 +29: ; preds = %AdjustSensorOrientation.exit, %11, %.lr.ph + %30 = phi ptr [ %.pre, %AdjustSensorOrientation.exit ], [ %8, %11 ], [ %8, %.lr.ph ] + %31 = getelementptr inbounds nuw i8, ptr %30, i64 264 + %32 = load ptr, ptr %31, align 8 + %.not18 = icmp eq ptr %32, null + br i1 %.not18, label %51, label %33 -32: ; preds = %28 - %33 = getelementptr inbounds nuw i8, ptr %29, i64 256 - %34 = load i32, ptr %33, align 8 - %35 = icmp eq i32 %34, %1 - br i1 %35, label %36, label %49 +33: ; preds = %29 + %34 = getelementptr inbounds nuw i8, ptr %30, i64 256 + %35 = load i32, ptr %34, align 8 + %36 = icmp eq i32 %35, %1 + br i1 %36, label %37, label %51 -36: ; preds = %32 +37: ; preds = %33 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #10 call void @SDL_AssertJoysticksLocked() #10 - %37 = getelementptr inbounds nuw i8, ptr %29, i64 272 - br label %38 - -38: ; preds = %47, %36 - %indvars.iv16.i19 = phi i64 [ 0, %36 ], [ %indvars.iv.next17.i23, %47 ] - %39 = getelementptr inbounds nuw float, ptr %7, i64 %indvars.iv16.i19 - store float 0.000000e+00, ptr %39, align 4 - br label %40 + %38 = getelementptr inbounds nuw i8, ptr %30, i64 272 + br label %39 + +39: ; preds = %49, %37 + %indvars.iv16.i19 = phi i64 [ 0, %37 ], [ %indvars.iv.next17.i23, %49 ] + %40 = getelementptr inbounds nuw float, ptr %7, i64 %indvars.iv16.i19 + store float 0.000000e+00, ptr %40, align 4 + %41 = getelementptr inbounds nuw [3 x [3 x float]], ptr %38, i64 0, i64 %indvars.iv16.i19 + br label %42 -40: ; preds = %40, %38 - %indvars.iv.i20 = phi i64 [ 0, %38 ], [ %indvars.iv.next.i21, %40 ] - %41 = phi float [ 0.000000e+00, %38 ], [ %46, %40 ] - %42 = getelementptr inbounds nuw [3 x [3 x float]], ptr %37, i64 0, i64 %indvars.iv16.i19, i64 %indvars.iv.i20 - %43 = load float, ptr %42, align 4 - %44 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i20 +42: ; preds = %42, %39 + %indvars.iv.i20 = phi i64 [ 0, %39 ], [ %indvars.iv.next.i21, %42 ] + %43 = phi float [ 0.000000e+00, %39 ], [ %48, %42 ] + %44 = getelementptr inbounds nuw [3 x float], ptr %41, i64 0, i64 %indvars.iv.i20 %45 = load float, ptr %44, align 4 - %46 = call float @llvm.fmuladd.f32(float %43, float %45, float %41) - store float %46, ptr %39, align 4 + %46 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i20 + %47 = load float, ptr %46, align 4 + %48 = call float @llvm.fmuladd.f32(float %45, float %47, float %43) + store float %48, ptr %40, align 4 %indvars.iv.next.i21 = add nuw nsw i64 %indvars.iv.i20, 1 %exitcond.not.i22 = icmp eq i64 %indvars.iv.next.i21, 3 - br i1 %exitcond.not.i22, label %47, label %40, !llvm.loop !7 + br i1 %exitcond.not.i22, label %49, label %42, !llvm.loop !7 -47: ; preds = %40 +49: ; preds = %42 %indvars.iv.next17.i23 = add nuw nsw i64 %indvars.iv16.i19, 1 %exitcond19.not.i24 = icmp eq i64 %indvars.iv.next17.i23, 3 - br i1 %exitcond19.not.i24, label %AdjustSensorOrientation.exit25, label %38, !llvm.loop !8 + br i1 %exitcond19.not.i24, label %AdjustSensorOrientation.exit25, label %39, !llvm.loop !8 -AdjustSensorOrientation.exit25: ; preds = %47 - %48 = load ptr, ptr %.028, align 8 - call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %48, i32 noundef 2, i64 noundef %2, ptr noundef nonnull %7, i32 noundef 3) #10 +AdjustSensorOrientation.exit25: ; preds = %49 + %50 = load ptr, ptr %.028, align 8 + call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %50, i32 noundef 2, i64 noundef %2, ptr noundef nonnull %7, i32 noundef 3) #10 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #10 - br label %49 + br label %51 -49: ; preds = %28, %32, %AdjustSensorOrientation.exit25 - %50 = getelementptr inbounds nuw i8, ptr %.028, i64 80 - %.0 = load ptr, ptr %50, align 8 +51: ; preds = %29, %33, %AdjustSensorOrientation.exit25 + %52 = getelementptr inbounds nuw i8, ptr %.028, i64 80 + %.0 = load ptr, ptr %52, align 8 %.not = icmp eq ptr %.0, null br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9 -._crit_edge: ; preds = %49, %5 +._crit_edge: ; preds = %51, %5 call void @SDL_UnlockJoysticks_REAL() #10 ret void } diff --git a/bench/slurm/optimized/cpu_frequency.ll b/bench/slurm/optimized/cpu_frequency.ll index ee2a9251380..82bb6119d9b 100644 --- a/bench/slurm/optimized/cpu_frequency.ll +++ b/bench/slurm/optimized/cpu_frequency.ll @@ -495,28 +495,29 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc %176 = mul i32 %173, %175 %177 = add i32 %176, %166 %178 = load ptr, ptr @cpufreq, align 8 - %179 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %178, i64 %indvars.iv68, i32 3, i64 %indvars.iv.i.i - store i32 %177, ptr %179, align 4 + %179 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %178, i64 %indvars.iv68, i32 3 + %180 = getelementptr inbounds nuw [64 x i32], ptr %179, i64 0, i64 %indvars.iv.i.i + store i32 %177, ptr %180, align 4 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 63 - br i1 %exitcond.not.i.i, label %180, label %174, !llvm.loop !11 - -180: ; preds = %174 - %181 = load ptr, ptr @cpufreq, align 8 - %182 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %181, i64 %indvars.iv68, i32 3, i64 63 - store i32 %169, ptr %182, align 4 - %183 = load ptr, ptr @cpufreq, align 8 - %184 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %183, i64 %indvars.iv68, i32 1 - store i8 64, ptr %184, align 1 + br i1 %exitcond.not.i.i, label %181, label %174, !llvm.loop !11 + +181: ; preds = %174 + %182 = load ptr, ptr @cpufreq, align 8 + %183 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %182, i64 %indvars.iv68, i32 3, i64 63 + store i32 %169, ptr %183, align 4 + %184 = load ptr, ptr @cpufreq, align 8 + %185 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %184, i64 %indvars.iv68, i32 1 + store i8 64, ptr %185, align 1 br label %_cpu_freq_cpu_avail.exit .preheader31.i: ; preds = %160, %.loopexit.i %indvars.iv49.i = phi i64 [ %indvars.iv.next50.i, %.loopexit.i ], [ 0, %160 ] - %indvars.iv46.i = phi i32 [ %185, %.loopexit.i ], [ -1, %160 ] - %185 = add nsw i32 %indvars.iv46.i, 1 - %186 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %163, ptr noundef nonnull @.str.62, ptr noundef nonnull %3) #10 - %187 = icmp eq i32 %186, -1 - br i1 %187, label %204, label %.preheader29.i + %indvars.iv46.i = phi i32 [ %186, %.loopexit.i ], [ -1, %160 ] + %186 = add nsw i32 %indvars.iv46.i, 1 + %187 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %163, ptr noundef nonnull @.str.62, ptr noundef nonnull %3) #10 + %188 = icmp eq i32 %187, -1 + br i1 %188, label %209, label %.preheader29.i .preheader29.i: ; preds = %.preheader31.i %.not41.i = icmp eq i64 %indvars.iv49.i, 0 @@ -524,71 +525,77 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc %.pre58.i = load ptr, ptr @cpufreq, align 8 br i1 %.not41.i, label %.loopexit.i, label %.lr.ph.i -.lr.ph.i: ; preds = %.preheader29.i, %199 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %199 ], [ 0, %.preheader29.i ] - %188 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %.pre58.i, i64 %indvars.iv68, i32 3, i64 %indvars.iv.i - %189 = load i32, ptr %188, align 4 - %190 = icmp ult i32 %.pre56.i, %189 - br i1 %190, label %.preheader.i, label %199 - -.preheader.i: ; preds = %.lr.ph.i - %191 = trunc nuw nsw i64 %indvars.iv.i to i32 - %192 = and i64 %indvars.iv.i, 4294967295 - %.not36.i = icmp samesign ult i64 %indvars.iv49.i, %192 +.lr.ph.i: ; preds = %.preheader29.i + %189 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %.pre58.i, i64 %indvars.iv68, i32 3 + br label %190 + +190: ; preds = %203, %.lr.ph.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %203 ] + %191 = getelementptr inbounds nuw [64 x i32], ptr %189, i64 0, i64 %indvars.iv.i + %192 = load i32, ptr %191, align 4 + %193 = icmp ult i32 %.pre56.i, %192 + br i1 %193, label %.preheader.i, label %203 + +.preheader.i: ; preds = %190 + %194 = trunc nuw nsw i64 %indvars.iv.i to i32 + %195 = and i64 %indvars.iv.i, 4294967295 + %.not36.i = icmp samesign ult i64 %indvars.iv49.i, %195 br i1 %.not36.i, label %.loopexit.i, label %.lr.ph38.preheader.i .lr.ph38.preheader.i: ; preds = %.preheader.i %sext.i = shl i64 %indvars.iv.i, 32 - %193 = ashr exact i64 %sext.i, 32 + %196 = ashr exact i64 %sext.i, 32 br label %.lr.ph38.i .lr.ph38.i: ; preds = %.lr.ph38.i, %.lr.ph38.preheader.i %indvars.iv51.i = phi i64 [ %indvars.iv49.i, %.lr.ph38.preheader.i ], [ %indvars.iv.next52.i, %.lr.ph38.i ] - %194 = load ptr, ptr @cpufreq, align 8 - %195 = getelementptr inbounds %struct.cpu_freq_data, ptr %194, i64 %indvars.iv68, i32 3, i64 %indvars.iv51.i - %196 = load i32, ptr %195, align 4 - %197 = add nuw nsw i64 %indvars.iv51.i, 1 - %198 = getelementptr inbounds %struct.cpu_freq_data, ptr %194, i64 %indvars.iv68, i32 3, i64 %197 - store i32 %196, ptr %198, align 4 + %197 = load ptr, ptr @cpufreq, align 8 + %198 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %197, i64 %indvars.iv68, i32 3 + %199 = getelementptr inbounds [64 x i32], ptr %198, i64 0, i64 %indvars.iv51.i + %200 = load i32, ptr %199, align 4 + %201 = add nuw nsw i64 %indvars.iv51.i, 1 + %202 = getelementptr inbounds [64 x i32], ptr %198, i64 0, i64 %201 + store i32 %200, ptr %202, align 4 %indvars.iv.next52.i = add nsw i64 %indvars.iv51.i, -1 - %.not.not.i = icmp sgt i64 %indvars.iv51.i, %193 + %.not.not.i = icmp sgt i64 %indvars.iv51.i, %196 br i1 %.not.not.i, label %.lr.ph38.i, label %.loopexit.loopexit.i, !llvm.loop !12 -199: ; preds = %.lr.ph.i +203: ; preds = %190 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %indvars.iv49.i - br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !13 + br i1 %exitcond.not.i, label %.loopexit.i, label %190, !llvm.loop !13 .loopexit.loopexit.i: ; preds = %.lr.ph38.i %.pre.i = load i32, ptr %3, align 4 %.pre57.i = load ptr, ptr @cpufreq, align 8 br label %.loopexit.i -.loopexit.i: ; preds = %199, %.loopexit.loopexit.i, %.preheader.i, %.preheader29.i - %200 = phi ptr [ %.pre58.i, %.preheader.i ], [ %.pre58.i, %.preheader29.i ], [ %.pre57.i, %.loopexit.loopexit.i ], [ %.pre58.i, %199 ] - %201 = phi i32 [ %.pre56.i, %.preheader.i ], [ %.pre56.i, %.preheader29.i ], [ %.pre.i, %.loopexit.loopexit.i ], [ %.pre56.i, %199 ] - %.02533.i = phi i32 [ %191, %.preheader.i ], [ 0, %.preheader29.i ], [ %191, %.loopexit.loopexit.i ], [ %185, %199 ] - %202 = zext nneg i32 %.02533.i to i64 - %203 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %200, i64 %indvars.iv68, i32 3, i64 %202 - store i32 %201, ptr %203, align 4 +.loopexit.i: ; preds = %203, %.loopexit.loopexit.i, %.preheader.i, %.preheader29.i + %204 = phi ptr [ %.pre58.i, %.preheader.i ], [ %.pre58.i, %.preheader29.i ], [ %.pre57.i, %.loopexit.loopexit.i ], [ %.pre58.i, %203 ] + %205 = phi i32 [ %.pre56.i, %.preheader.i ], [ %.pre56.i, %.preheader29.i ], [ %.pre.i, %.loopexit.loopexit.i ], [ %.pre56.i, %203 ] + %.02533.i = phi i32 [ %194, %.preheader.i ], [ 0, %.preheader29.i ], [ %194, %.loopexit.loopexit.i ], [ %186, %203 ] + %206 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %204, i64 %indvars.iv68, i32 3 + %207 = zext nneg i32 %.02533.i to i64 + %208 = getelementptr inbounds nuw [64 x i32], ptr %206, i64 0, i64 %207 + store i32 %205, ptr %208, align 4 %indvars.iv.next50.i = add nuw nsw i64 %indvars.iv49.i, 1 %exitcond55.not.i = icmp eq i64 %indvars.iv.next50.i, 63 - br i1 %exitcond55.not.i, label %209, label %.preheader31.i, !llvm.loop !14 - -204: ; preds = %.preheader31.i - %205 = trunc i64 %indvars.iv49.i to i8 - %206 = load ptr, ptr @cpufreq, align 8 - %207 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %206, i64 %indvars.iv68, i32 1 - store i8 %205, ptr %207, align 1 - %208 = call i32 @fclose(ptr noundef nonnull %163) + br i1 %exitcond55.not.i, label %214, label %.preheader31.i, !llvm.loop !14 + +209: ; preds = %.preheader31.i + %210 = trunc i64 %indvars.iv49.i to i8 + %211 = load ptr, ptr @cpufreq, align 8 + %212 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %211, i64 %indvars.iv68, i32 1 + store i8 %210, ptr %212, align 1 + %213 = call i32 @fclose(ptr noundef nonnull %163) br label %_cpu_freq_cpu_avail.exit -209: ; preds = %.loopexit.i - %210 = load ptr, ptr @cpufreq, align 8 - %211 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %210, i64 %indvars.iv68, i32 1 - store i8 63, ptr %211, align 1 - %212 = call i32 @fclose(ptr noundef nonnull %163) - %213 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.98) #10 +214: ; preds = %.loopexit.i + %215 = load ptr, ptr @cpufreq, align 8 + %216 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %215, i64 %indvars.iv68, i32 1 + store i8 63, ptr %216, align 1 + %217 = call i32 @fclose(ptr noundef nonnull %163) + %218 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.98) #10 br label %_cpu_freq_cpu_avail.exit _cpu_freq_cpu_avail.exit.thread: ; preds = %165, %168 @@ -596,54 +603,54 @@ _cpu_freq_cpu_avail.exit.thread: ; preds = %165, %168 call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %2) #10 br label %.loopexit -_cpu_freq_cpu_avail.exit: ; preds = %180, %204, %209 +_cpu_freq_cpu_avail.exit: ; preds = %181, %209, %214 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #10 call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %2) #10 - %214 = icmp eq i64 %indvars.iv68, 0 - br i1 %214, label %215, label %.loopexit + %219 = icmp eq i64 %indvars.iv68, 0 + br i1 %219, label %220, label %.loopexit -215: ; preds = %_cpu_freq_cpu_avail.exit - %216 = load i64, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 320), align 8 - %217 = and i64 %216, 2199023255552 - %.not46 = icmp eq i64 %217, 0 +220: ; preds = %_cpu_freq_cpu_avail.exit + %221 = load i64, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 320), align 8 + %222 = and i64 %221, 2199023255552 + %.not46 = icmp eq i64 %222, 0 br i1 %.not46, label %.loopexit, label %.preheader -.preheader: ; preds = %215 - %218 = load ptr, ptr @cpufreq, align 8 - %219 = getelementptr inbounds nuw i8, ptr %218, i64 1 - %220 = load i8, ptr %219, align 1 - %.not61 = icmp eq i8 %220, 0 +.preheader: ; preds = %220 + %223 = load ptr, ptr @cpufreq, align 8 + %224 = getelementptr inbounds nuw i8, ptr %223, i64 1 + %225 = load i8, ptr %224, align 1 + %.not61 = icmp eq i8 %225, 0 br i1 %.not61, label %.loopexit, label %.lr.ph55 -.lr.ph55: ; preds = %.preheader, %228 - %indvars.iv65 = phi i64 [ %indvars.iv.next66, %228 ], [ 0, %.preheader ] - %221 = call i32 @get_log_level() #10 - %222 = icmp sgt i32 %221, 2 - br i1 %222, label %223, label %228 - -223: ; preds = %.lr.ph55 - %224 = load ptr, ptr @cpufreq, align 8 - %225 = getelementptr inbounds nuw i8, ptr %224, i64 4 - %226 = getelementptr inbounds nuw [64 x i32], ptr %225, i64 0, i64 %indvars.iv65 - %227 = load i32, ptr %226, align 4 - call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.19, i32 noundef %227) #10 - br label %228 - -228: ; preds = %.lr.ph55, %223 - %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 +.lr.ph55: ; preds = %.preheader, %233 + %indvars.iv65 = phi i64 [ %indvars.iv.next66, %233 ], [ 0, %.preheader ] + %226 = call i32 @get_log_level() #10 + %227 = icmp sgt i32 %226, 2 + br i1 %227, label %228, label %233 + +228: ; preds = %.lr.ph55 %229 = load ptr, ptr @cpufreq, align 8 - %230 = getelementptr inbounds nuw i8, ptr %229, i64 1 - %231 = load i8, ptr %230, align 1 - %232 = zext i8 %231 to i64 - %233 = icmp samesign ult i64 %indvars.iv.next66, %232 - br i1 %233, label %.lr.ph55, label %.loopexit, !llvm.loop !15 + %230 = getelementptr inbounds nuw i8, ptr %229, i64 4 + %231 = getelementptr inbounds nuw [64 x i32], ptr %230, i64 0, i64 %indvars.iv65 + %232 = load i32, ptr %231, align 4 + call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.19, i32 noundef %232) #10 + br label %233 -.loopexit: ; preds = %228, %.preheader, %_cpu_freq_cpu_avail.exit.thread, %215, %_cpu_freq_cpu_avail.exit, %.lr.ph58, %68 +233: ; preds = %.lr.ph55, %228 + %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 + %234 = load ptr, ptr @cpufreq, align 8 + %235 = getelementptr inbounds nuw i8, ptr %234, i64 1 + %236 = load i8, ptr %235, align 1 + %237 = zext i8 %236 to i64 + %238 = icmp samesign ult i64 %indvars.iv.next66, %237 + br i1 %238, label %.lr.ph55, label %.loopexit, !llvm.loop !15 + +.loopexit: ; preds = %233, %.preheader, %_cpu_freq_cpu_avail.exit.thread, %220, %_cpu_freq_cpu_avail.exit, %.lr.ph58, %68 %indvars.iv.next69 = add nuw nsw i64 %indvars.iv68, 1 - %234 = load i16, ptr @cpu_freq_count, align 2 - %235 = zext i16 %234 to i64 - %236 = icmp samesign ult i64 %indvars.iv.next69, %235 - br i1 %236, label %.lr.ph58, label %.loopexit49, !llvm.loop !16 + %239 = load i16, ptr @cpu_freq_count, align 2 + %240 = zext i16 %239 to i64 + %241 = icmp samesign ult i64 %indvars.iv.next69, %240 + br i1 %241, label %.lr.ph58, label %.loopexit49, !llvm.loop !16 .loopexit49: ; preds = %.loopexit, %59, %13, %16, %1, %22 call void @llvm.lifetime.end.p0(i64 100, ptr nonnull %6) #10 @@ -1647,7 +1654,7 @@ define internal fastcc void @_cpu_freq_setup_data(ptr noundef captures(none) %0, 68: ; preds = %58 %69 = add i64 %65, 4294967295 %70 = and i64 %69, 4294967295 - %71 = getelementptr inbounds %struct.cpu_freq_data, ptr %63, i64 %14, i32 4, i64 %70 + %71 = getelementptr inbounds nuw [24 x i8], ptr %64, i64 0, i64 %70 %72 = load i8, ptr %71, align 1 %73 = icmp eq i8 %72, 10 br i1 %73, label %74, label %75 @@ -2594,23 +2601,25 @@ define dso_local i32 @_cpu_freq_freqspec_num(i32 noundef %0, i32 noundef %1) loc 81: ; preds = %77 %82 = tail call i32 @get_log_level() #10 %83 = icmp sgt i32 %82, 2 - br i1 %83, label %84, label %88 + br i1 %83, label %84, label %89 84: ; preds = %81 %85 = load ptr, ptr @cpufreq, align 8 - %86 = getelementptr inbounds %struct.cpu_freq_data, ptr %85, i64 %5, i32 3, i64 %indvars.iv.next - %87 = load i32, ptr %86, align 4 - tail call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.43, i32 noundef %0, i32 noundef %87) #10 - br label %88 - -88: ; preds = %84, %81 - %89 = load ptr, ptr @cpufreq, align 8 - %90 = getelementptr inbounds %struct.cpu_freq_data, ptr %89, i64 %5, i32 3, i64 %indvars.iv.next - %91 = load i32, ptr %90, align 4 + %86 = getelementptr inbounds %struct.cpu_freq_data, ptr %85, i64 %5, i32 3 + %87 = getelementptr inbounds nuw [64 x i32], ptr %86, i64 0, i64 %indvars.iv.next + %88 = load i32, ptr %87, align 4 + tail call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.43, i32 noundef %0, i32 noundef %88) #10 + br label %89 + +89: ; preds = %84, %81 + %90 = load ptr, ptr @cpufreq, align 8 + %91 = getelementptr inbounds %struct.cpu_freq_data, ptr %90, i64 %5, i32 3 + %92 = getelementptr inbounds nuw [64 x i32], ptr %91, i64 0, i64 %indvars.iv.next + %93 = load i32, ptr %92, align 4 br label %.loopexit -.loopexit: ; preds = %73, %75, %10, %2, %4, %88, %62, %50, %39, %32, %29, %19, %16, %11 - %.047 = phi i32 [ %13, %11 ], [ %18, %16 ], [ %26, %19 ], [ %31, %29 ], [ %38, %32 ], [ %45, %39 ], [ %54, %50 ], [ %72, %62 ], [ %91, %88 ], [ -2, %4 ], [ -2, %2 ], [ -2, %10 ], [ -2, %73 ], [ %0, %75 ] +.loopexit: ; preds = %73, %75, %10, %2, %4, %89, %62, %50, %39, %32, %29, %19, %16, %11 + %.047 = phi i32 [ %13, %11 ], [ %18, %16 ], [ %26, %19 ], [ %31, %29 ], [ %38, %32 ], [ %45, %39 ], [ %54, %50 ], [ %72, %62 ], [ %93, %89 ], [ -2, %4 ], [ -2, %2 ], [ -2, %10 ], [ -2, %73 ], [ %0, %75 ] ret i32 %.047 } diff --git a/bench/slurm/optimized/proc_args.ll b/bench/slurm/optimized/proc_args.ll index bf7aaa7e2e9..6285503c69f 100644 --- a/bench/slurm/optimized/proc_args.ll +++ b/bench/slurm/optimized/proc_args.ll @@ -1662,123 +1662,124 @@ define dso_local noundef zeroext i1 @verify_socket_core_thread_count(ptr noundef 10: ; preds = %5 %11 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.46, ptr noundef nonnull @__func__.verify_socket_core_thread_count) #21 - br label %55 + br label %56 12: ; preds = %5 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(144) %9, i8 0, i64 144, i1 false) br label %.preheader -.preheader: ; preds = %12, %20 - %indvars.iv60 = phi i64 [ 0, %12 ], [ %indvars.iv.next61, %20 ] - %.055 = phi ptr [ %0, %12 ], [ %21, %20 ] - br label %13 +.preheader: ; preds = %12, %21 + %indvars.iv60 = phi i64 [ 0, %12 ], [ %indvars.iv.next61, %21 ] + %.055 = phi ptr [ %0, %12 ], [ %22, %21 ] + %13 = getelementptr inbounds nuw [3 x [48 x i8]], ptr %9, i64 0, i64 %indvars.iv60 + br label %14 -13: ; preds = %.preheader, %15 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %15 ] - %.153 = phi ptr [ %.055, %.preheader ], [ %16, %15 ] - %14 = load i8, ptr %.153, align 1 - switch i8 %14, label %15 [ +14: ; preds = %.preheader, %16 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %16 ] + %.153 = phi ptr [ %.055, %.preheader ], [ %17, %16 ] + %15 = load i8, ptr %.153, align 1 + switch i8 %15, label %16 [ i8 0, label %.loopexit i8 58, label %.loopexit ] -15: ; preds = %13 - %16 = getelementptr inbounds nuw i8, ptr %.153, i64 1 - %17 = getelementptr inbounds nuw [3 x [48 x i8]], ptr %9, i64 0, i64 %indvars.iv60, i64 %indvars.iv - store i8 %14, ptr %17, align 1 +16: ; preds = %14 + %17 = getelementptr inbounds nuw i8, ptr %.153, i64 1 + %18 = getelementptr inbounds nuw [48 x i8], ptr %13, i64 0, i64 %indvars.iv + store i8 %15, ptr %18, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 47 - br i1 %exitcond.not, label %thread-pre-split, label %13, !llvm.loop !13 + br i1 %exitcond.not, label %thread-pre-split, label %14, !llvm.loop !13 -thread-pre-split: ; preds = %15 - %.pr = load i8, ptr %16, align 1 +thread-pre-split: ; preds = %16 + %.pr = load i8, ptr %17, align 1 br label %.loopexit -.loopexit: ; preds = %13, %13, %thread-pre-split - %.151 = phi ptr [ %16, %thread-pre-split ], [ %.153, %13 ], [ %.153, %13 ] - %18 = phi i8 [ %.pr, %thread-pre-split ], [ %14, %13 ], [ %14, %13 ] - %19 = icmp eq i8 %18, 0 - br i1 %19, label %.split.loop.exit, label %20 +.loopexit: ; preds = %14, %14, %thread-pre-split + %.151 = phi ptr [ %17, %thread-pre-split ], [ %.153, %14 ], [ %.153, %14 ] + %19 = phi i8 [ %.pr, %thread-pre-split ], [ %15, %14 ], [ %15, %14 ] + %20 = icmp eq i8 %19, 0 + br i1 %20, label %.split.loop.exit, label %21 -20: ; preds = %.loopexit - %21 = getelementptr inbounds nuw i8, ptr %.151, i64 1 +21: ; preds = %.loopexit + %22 = getelementptr inbounds nuw i8, ptr %.151, i64 1 %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 %exitcond63.not = icmp eq i64 %indvars.iv.next61, 3 br i1 %exitcond63.not, label %.split.loop.exit67, label %.preheader, !llvm.loop !14 .split.loop.exit: ; preds = %.loopexit - %22 = trunc nuw nsw i64 %indvars.iv60 to i32 + %23 = trunc nuw nsw i64 %indvars.iv60 to i32 br label %.split.loop.exit67 -.split.loop.exit67: ; preds = %20, %.split.loop.exit - %.042.lcssa = phi i32 [ %22, %.split.loop.exit ], [ 3, %20 ] +.split.loop.exit67: ; preds = %21, %.split.loop.exit + %.042.lcssa = phi i32 [ %23, %.split.loop.exit ], [ 3, %21 ] %.not48 = icmp eq ptr %4, null - br i1 %.not48, label %29, label %23 - -23: ; preds = %.split.loop.exit67 - %24 = load i32, ptr %4, align 4 - %25 = and i32 %24, 14 - %.not49 = icmp eq i32 %25, 0 - %26 = icmp ult i32 %.042.lcssa, 3 - %or.cond74 = select i1 %.not49, i1 %26, i1 false - br i1 %or.cond74, label %switch.lookup, label %29 - -switch.lookup: ; preds = %23 - %27 = zext nneg i32 %.042.lcssa to i64 - %switch.gep = getelementptr inbounds nuw [3 x i32], ptr @switch.table.verify_socket_core_thread_count, i64 0, i64 %27 + br i1 %.not48, label %30, label %24 + +24: ; preds = %.split.loop.exit67 + %25 = load i32, ptr %4, align 4 + %26 = and i32 %25, 14 + %.not49 = icmp eq i32 %26, 0 + %27 = icmp ult i32 %.042.lcssa, 3 + %or.cond74 = select i1 %.not49, i1 %27, i1 false + br i1 %or.cond74, label %switch.lookup, label %30 + +switch.lookup: ; preds = %24 + %28 = zext nneg i32 %.042.lcssa to i64 + %switch.gep = getelementptr inbounds nuw [3 x i32], ptr @switch.table.verify_socket_core_thread_count, i64 0, i64 %28 %switch.load = load i32, ptr %switch.gep, align 4 - %28 = or disjoint i32 %24, %switch.load - store i32 %28, ptr %4, align 4 - br label %29 - -29: ; preds = %switch.lookup, %23, %.split.loop.exit67 - %30 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %9, ptr noundef nonnull @.str.47, ptr noundef %1, ptr noundef nonnull %6, i1 noundef zeroext true) - %31 = load i32, ptr %1, align 4 - %32 = icmp eq i32 %31, 1 - %33 = load i32, ptr %6, align 4 - %34 = icmp eq i32 %33, 2147483647 - %or.cond = select i1 %32, i1 %34, i1 false - br i1 %or.cond, label %35, label %36 - -35: ; preds = %29 + %29 = or disjoint i32 %25, %switch.load + store i32 %29, ptr %4, align 4 + br label %30 + +30: ; preds = %switch.lookup, %24, %.split.loop.exit67 + %31 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %9, ptr noundef nonnull @.str.47, ptr noundef %1, ptr noundef nonnull %6, i1 noundef zeroext true) + %32 = load i32, ptr %1, align 4 + %33 = icmp eq i32 %32, 1 + %34 = load i32, ptr %6, align 4 + %35 = icmp eq i32 %34, 2147483647 + %or.cond = select i1 %33, i1 %35, i1 false + br i1 %or.cond, label %36, label %37 + +36: ; preds = %30 store i32 -2, ptr %1, align 4 - br label %36 + br label %37 -36: ; preds = %35, %29 - %37 = getelementptr inbounds nuw i8, ptr %9, i64 48 - %38 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %37, ptr noundef nonnull @.str.48, ptr noundef %2, ptr noundef nonnull %7, i1 noundef zeroext true) - %39 = load i32, ptr %2, align 4 - %40 = icmp eq i32 %39, 1 - %41 = load i32, ptr %7, align 4 - %42 = icmp eq i32 %41, 2147483647 - %or.cond3 = select i1 %40, i1 %42, i1 false - br i1 %or.cond3, label %43, label %44 - -43: ; preds = %36 +37: ; preds = %36, %30 + %38 = getelementptr inbounds nuw i8, ptr %9, i64 48 + %39 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %38, ptr noundef nonnull @.str.48, ptr noundef %2, ptr noundef nonnull %7, i1 noundef zeroext true) + %40 = load i32, ptr %2, align 4 + %41 = icmp eq i32 %40, 1 + %42 = load i32, ptr %7, align 4 + %43 = icmp eq i32 %42, 2147483647 + %or.cond3 = select i1 %41, i1 %43, i1 false + br i1 %or.cond3, label %44, label %45 + +44: ; preds = %37 store i32 -2, ptr %2, align 4 - br label %44 - -44: ; preds = %43, %36 - %45 = and i1 %30, %38 - %46 = getelementptr inbounds nuw i8, ptr %9, i64 96 - %47 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %46, ptr noundef nonnull @.str.49, ptr noundef %3, ptr noundef nonnull %8, i1 noundef zeroext true) - %48 = load i32, ptr %3, align 4 - %49 = icmp eq i32 %48, 1 - %50 = load i32, ptr %8, align 4 - %51 = icmp eq i32 %50, 2147483647 - %or.cond5 = select i1 %49, i1 %51, i1 false - br i1 %or.cond5, label %52, label %53 - -52: ; preds = %44 + br label %45 + +45: ; preds = %44, %37 + %46 = and i1 %31, %39 + %47 = getelementptr inbounds nuw i8, ptr %9, i64 96 + %48 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %47, ptr noundef nonnull @.str.49, ptr noundef %3, ptr noundef nonnull %8, i1 noundef zeroext true) + %49 = load i32, ptr %3, align 4 + %50 = icmp eq i32 %49, 1 + %51 = load i32, ptr %8, align 4 + %52 = icmp eq i32 %51, 2147483647 + %or.cond5 = select i1 %50, i1 %52, i1 false + br i1 %or.cond5, label %53, label %54 + +53: ; preds = %45 store i32 -2, ptr %3, align 4 - br label %53 + br label %54 -53: ; preds = %52, %44 - %54 = and i1 %45, %47 - br label %55 +54: ; preds = %53, %45 + %55 = and i1 %46, %48 + br label %56 -55: ; preds = %53, %10 - %.044 = phi i1 [ %54, %53 ], [ false, %10 ] +56: ; preds = %54, %10 + %.044 = phi i1 [ %55, %54 ], [ false, %10 ] call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #21 diff --git a/bench/spike/optimized/plic.ll b/bench/spike/optimized/plic.ll index a46fbb3daf2..a3cce9e58ab 100644 --- a/bench/spike/optimized/plic.ll +++ b/bench/spike/optimized/plic.ll @@ -1595,7 +1595,7 @@ define noundef zeroext i1 @_ZN6plic_t4loadEmmPh(ptr noundef nonnull align 8 dere 52: ; preds = %29 %53 = icmp ult i64 %1, 2097152 - br i1 %53, label %54, label %77 + br i1 %53, label %54, label %78 54: ; preds = %52 %55 = add nuw nsw i64 %1, 549755805696 @@ -1622,65 +1622,66 @@ define noundef zeroext i1 @_ZN6plic_t4loadEmmPh(ptr noundef nonnull align 8 dere br i1 %73, label %74, label %_ZN6plic_t13priority_readEmPj.exit 74: ; preds = %68 - %75 = getelementptr inbounds nuw %struct.plic_context_t, ptr %62, i64 %58, i32 4, i64 %69 - %76 = load i32, ptr %75, align 4, !tbaa !53 + %75 = getelementptr inbounds nuw %struct.plic_context_t, ptr %62, i64 %58, i32 4 + %76 = getelementptr inbounds nuw [32 x i32], ptr %75, i64 0, i64 %69 + %77 = load i32, ptr %76, align 4, !tbaa !53 br label %_ZN6plic_t13priority_readEmPj.exit -77: ; preds = %52 - %78 = icmp ult i64 %1, 16777216 - br i1 %78, label %79, label %_ZN6plic_t13priority_readEmPj.exit - -79: ; preds = %77 - %80 = add nuw nsw i64 %1, 17592183947264 - %81 = lshr i64 %80, 12 - %82 = and i64 %1, 4095 - %83 = and i64 %81, 4294967295 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %86 = load ptr, ptr %85, align 8, !tbaa !28 - %87 = load ptr, ptr %84, align 8, !tbaa !34 - %88 = ptrtoint ptr %86 to i64 +78: ; preds = %52 + %79 = icmp ult i64 %1, 16777216 + br i1 %79, label %80, label %_ZN6plic_t13priority_readEmPj.exit + +80: ; preds = %78 + %81 = add nuw nsw i64 %1, 17592183947264 + %82 = lshr i64 %81, 12 + %83 = and i64 %1, 4095 + %84 = and i64 %82, 4294967295 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %87 = load ptr, ptr %86, align 8, !tbaa !28 + %88 = load ptr, ptr %85, align 8, !tbaa !34 %89 = ptrtoint ptr %87 to i64 - %90 = sub i64 %88, %89 - %91 = sdiv exact i64 %90, 1424 - %92 = icmp ult i64 %83, %91 - br i1 %92, label %93, label %_ZN6plic_t13priority_readEmPj.exit - -93: ; preds = %79 - %94 = getelementptr inbounds nuw %struct.plic_context_t, ptr %87, i64 %83 - switch i64 %82, label %_ZN6plic_t13priority_readEmPj.exit [ - i64 0, label %95 - i64 4, label %99 + %90 = ptrtoint ptr %88 to i64 + %91 = sub i64 %89, %90 + %92 = sdiv exact i64 %91, 1424 + %93 = icmp ult i64 %84, %92 + br i1 %93, label %94, label %_ZN6plic_t13priority_readEmPj.exit + +94: ; preds = %80 + %95 = getelementptr inbounds nuw %struct.plic_context_t, ptr %88, i64 %84 + switch i64 %83, label %_ZN6plic_t13priority_readEmPj.exit [ + i64 0, label %96 + i64 4, label %100 ] -95: ; preds = %93 - %96 = getelementptr inbounds nuw i8, ptr %94, i64 9 - %97 = load i8, ptr %96, align 1, !tbaa !51 - %98 = zext i8 %97 to i32 +96: ; preds = %94 + %97 = getelementptr inbounds nuw i8, ptr %95, i64 9 + %98 = load i8, ptr %97, align 1, !tbaa !51 + %99 = zext i8 %98 to i32 br label %_ZN6plic_t13priority_readEmPj.exit -99: ; preds = %93 - %100 = tail call noundef i32 @_ZN6plic_t13context_claimEP14plic_context_t(ptr noundef nonnull readonly align 8 dereferenceable(1204) %0, ptr noundef nonnull %94) +100: ; preds = %94 + %101 = tail call noundef i32 @_ZN6plic_t13context_claimEP14plic_context_t(ptr noundef nonnull readonly align 8 dereferenceable(1204) %0, ptr noundef nonnull %95) br label %_ZN6plic_t13priority_readEmPj.exit -_ZN6plic_t13priority_readEmPj.exit: ; preds = %46, %93, %99, %95, %74, %68, %38, %31, %24, %18, %79, %54, %77 - %.048 = phi i32 [ 0, %54 ], [ 0, %79 ], [ 0, %77 ], [ %28, %24 ], [ 0, %18 ], [ 0, %38 ], [ 0, %31 ], [ %76, %74 ], [ 0, %68 ], [ 0, %93 ], [ %100, %99 ], [ %98, %95 ], [ %49, %46 ] - %.040 = phi i1 [ false, %54 ], [ false, %79 ], [ false, %77 ], [ true, %24 ], [ true, %18 ], [ true, %38 ], [ true, %31 ], [ true, %74 ], [ true, %68 ], [ true, %93 ], [ true, %99 ], [ true, %95 ], [ true, %46 ] - %.039 = phi i64 [ %57, %54 ], [ %82, %79 ], [ %1, %77 ], [ %1, %24 ], [ %1, %18 ], [ %1, %38 ], [ %1, %31 ], [ %57, %74 ], [ %57, %68 ], [ %82, %93 ], [ 4, %99 ], [ 0, %95 ], [ %1, %46 ] +_ZN6plic_t13priority_readEmPj.exit: ; preds = %46, %94, %100, %96, %74, %68, %38, %31, %24, %18, %80, %54, %78 + %.048 = phi i32 [ 0, %54 ], [ 0, %80 ], [ 0, %78 ], [ %28, %24 ], [ 0, %18 ], [ 0, %38 ], [ 0, %31 ], [ %77, %74 ], [ 0, %68 ], [ 0, %94 ], [ %101, %100 ], [ %99, %96 ], [ %49, %46 ] + %.040 = phi i1 [ false, %54 ], [ false, %80 ], [ false, %78 ], [ true, %24 ], [ true, %18 ], [ true, %38 ], [ true, %31 ], [ true, %74 ], [ true, %68 ], [ true, %94 ], [ true, %100 ], [ true, %96 ], [ true, %46 ] + %.039 = phi i64 [ %57, %54 ], [ %83, %80 ], [ %1, %78 ], [ %1, %24 ], [ %1, %18 ], [ %1, %38 ], [ %1, %31 ], [ %57, %74 ], [ %57, %68 ], [ %83, %94 ], [ 4, %100 ], [ 0, %96 ], [ %1, %46 ] br label %.lr.ph.i47 .lr.ph.i47: ; preds = %.lr.ph.i47, %_ZN6plic_t13priority_readEmPj.exit - %.08.i = phi i64 [ %107, %.lr.ph.i47 ], [ 0, %_ZN6plic_t13priority_readEmPj.exit ] - %101 = add i64 %.08.i, %.039 - %.tr.i = trunc i64 %101 to i32 - %102 = shl i32 %.tr.i, 3 - %103 = and i32 %102, 24 - %104 = lshr i32 %.048, %103 - %105 = trunc i32 %104 to i8 - %106 = getelementptr inbounds nuw i8, ptr %3, i64 %.08.i - store i8 %105, ptr %106, align 1, !tbaa !32 - %107 = add nuw nsw i64 %.08.i, 1 - %exitcond.not.i = icmp eq i64 %107, 4 + %.08.i = phi i64 [ %108, %.lr.ph.i47 ], [ 0, %_ZN6plic_t13priority_readEmPj.exit ] + %102 = add i64 %.08.i, %.039 + %.tr.i = trunc i64 %102 to i32 + %103 = shl i32 %.tr.i, 3 + %104 = and i32 %103, 24 + %105 = lshr i32 %.048, %104 + %106 = trunc i32 %105 to i8 + %107 = getelementptr inbounds nuw i8, ptr %3, i64 %.08.i + store i8 %106, ptr %107, align 1, !tbaa !32 + %108 = add nuw nsw i64 %.08.i, 1 + %exitcond.not.i = icmp eq i64 %108, 4 br i1 %exitcond.not.i, label %_Z22read_little_endian_regIjEvT_mmPh.exit, label %.lr.ph.i47, !llvm.loop !66 _Z22read_little_endian_regIjEvT_mmPh.exit: ; preds = %.lr.ph.i47, %4, %6, %10 diff --git a/bench/stb/optimized/stb_ds.ll b/bench/stb/optimized/stb_ds.ll index d792e3fe586..a5e4b08fdbf 100644 --- a/bench/stb/optimized/stb_ds.ll +++ b/bench/stb/optimized/stb_ds.ll @@ -966,7 +966,7 @@ define ptr @stbds_hmget_key_ts(ptr noundef readonly captures(address_is_null, re tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %11, i8 0, i64 %1, i1 false) store i64 -1, ptr %4, align 8, !tbaa !10 %14 = getelementptr inbounds nuw i8, ptr %11, i64 %1 - br label %32 + br label %33 15: ; preds = %6 %16 = sub i64 0, %1 @@ -974,29 +974,30 @@ define ptr @stbds_hmget_key_ts(ptr noundef readonly captures(address_is_null, re %18 = getelementptr inbounds i8, ptr %17, i64 -16 %19 = load ptr, ptr %18, align 8, !tbaa !37 %20 = icmp eq ptr %19, null - br i1 %20, label %31, label %21 + br i1 %20, label %32, label %21 21: ; preds = %15 %22 = tail call i64 @stbds_hm_find_slot(ptr noundef nonnull %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, i64 noundef 0, i32 noundef %5) %23 = icmp slt i64 %22, 0 - br i1 %23, label %31, label %24 + br i1 %23, label %32, label %24 24: ; preds = %21 %25 = getelementptr inbounds nuw i8, ptr %19, i64 96 %26 = load ptr, ptr %25, align 8, !tbaa !13 %27 = lshr i64 %22, 3 - %28 = and i64 %22, 7 - %29 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %26, i64 %27, i32 1, i64 %28 - %30 = load i64, ptr %29, align 8, !tbaa !10 - br label %31 + %28 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %26, i64 %27, i32 1 + %29 = and i64 %22, 7 + %30 = getelementptr inbounds nuw [8 x i64], ptr %28, i64 0, i64 %29 + %31 = load i64, ptr %30, align 8, !tbaa !10 + br label %32 -31: ; preds = %24, %21, %15 - %storemerge30 = phi i64 [ -1, %15 ], [ %30, %24 ], [ -1, %21 ] +32: ; preds = %24, %21, %15 + %storemerge30 = phi i64 [ -1, %15 ], [ %31, %24 ], [ -1, %21 ] store i64 %storemerge30, ptr %4, align 8, !tbaa !10 - br label %32 + br label %33 -32: ; preds = %31, %8 - %.0 = phi ptr [ %14, %8 ], [ %0, %31 ] +33: ; preds = %32, %8 + %.0 = phi ptr [ %14, %8 ], [ %0, %32 ] ret ptr %.0 } @@ -1037,18 +1038,19 @@ define ptr @stbds_hmget_key(ptr noundef captures(address_is_null, ret: address, %24 = getelementptr inbounds nuw i8, ptr %18, i64 96 %25 = load ptr, ptr %24, align 8, !tbaa !13 %26 = lshr i64 %21, 3 - %27 = and i64 %21, 7 - %28 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %25, i64 %26, i32 1, i64 %27 - %29 = load i64, ptr %28, align 8, !tbaa !10 + %27 = getelementptr inbounds nuw %struct.stbds_hash_bucket, ptr %25, i64 %26, i32 1 + %28 = and i64 %21, 7 + %29 = getelementptr inbounds nuw [8 x i64], ptr %27, i64 0, i64 %28 + %30 = load i64, ptr %29, align 8, !tbaa !10 br label %stbds_hmget_key_ts.exit stbds_hmget_key_ts.exit: ; preds = %14, %20, %23, %7 %.pre-phi = phi i64 [ %15, %14 ], [ %15, %20 ], [ %15, %23 ], [ %.pre, %7 ] - %.0 = phi i64 [ -1, %14 ], [ -1, %20 ], [ %29, %23 ], [ -1, %7 ] + %.0 = phi i64 [ -1, %14 ], [ -1, %20 ], [ %30, %23 ], [ -1, %7 ] %.0.i = phi ptr [ %0, %14 ], [ %0, %20 ], [ %0, %23 ], [ %13, %7 ] - %30 = getelementptr inbounds i8, ptr %.0.i, i64 %.pre-phi - %31 = getelementptr inbounds i8, ptr %30, i64 -8 - store i64 %.0, ptr %31, align 8, !tbaa !46 + %31 = getelementptr inbounds i8, ptr %.0.i, i64 %.pre-phi + %32 = getelementptr inbounds i8, ptr %31, i64 -8 + store i64 %.0, ptr %32, align 8, !tbaa !46 ret ptr %.0.i } @@ -1870,7 +1872,7 @@ stbds_log2.exit.i: ; Function Attrs: nounwind uwtable define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_null, ret: address, provenance) %0, i64 noundef %1, ptr noundef readonly captures(none) %2, i64 noundef %3, i64 noundef %4, i32 noundef %5) local_unnamed_addr #13 { %7 = icmp eq ptr %0, null - br i1 %7, label %88, label %8 + br i1 %7, label %89, label %8 8: ; preds = %6 %9 = sub i64 0, %1 @@ -1881,12 +1883,12 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul %14 = getelementptr inbounds i8, ptr %10, i64 -8 store i64 0, ptr %14, align 8, !tbaa !46 %15 = icmp eq ptr %13, null - br i1 %15, label %88, label %16 + br i1 %15, label %89, label %16 16: ; preds = %8 %17 = tail call i64 @stbds_hm_find_slot(ptr noundef nonnull %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, i64 noundef %4, i32 noundef %5) %18 = icmp slt i64 %17, 0 - br i1 %18, label %88, label %19 + br i1 %18, label %89, label %19 19: ; preds = %16 %20 = getelementptr inbounds nuw i8, ptr %13, i64 96 @@ -1929,11 +1931,11 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul 46: ; preds = %42, %38 %.not = icmp eq i64 %27, %29 - br i1 %.not, label %66, label %53 + br i1 %.not, label %67, label %53 .thread: ; preds = %19 %.not91 = icmp eq i64 %27, %29 - br i1 %.not91, label %66, label %.thread92 + br i1 %.not91, label %67, label %.thread92 .thread92: ; preds = %.thread %47 = mul i64 %27, %1 @@ -1961,50 +1963,51 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul %62 = load ptr, ptr %20, align 8, !tbaa !13 %63 = ashr i64 %.083, 3 %64 = and i64 %.083, 7 - %65 = getelementptr inbounds %struct.stbds_hash_bucket, ptr %62, i64 %63, i32 1, i64 %64 - store i64 %27, ptr %65, align 8, !tbaa !10 - br label %66 - -66: ; preds = %.thread, %61, %46 - %67 = load i64, ptr %11, align 8, !tbaa !3 - %68 = add i64 %67, -1 - store i64 %68, ptr %11, align 8, !tbaa !3 - %69 = load i64, ptr %30, align 8, !tbaa !21 - %70 = getelementptr inbounds nuw i8, ptr %13, i64 32 - %71 = load i64, ptr %70, align 8, !tbaa !24 - %72 = icmp ult i64 %69, %71 - br i1 %72, label %73, label %79 - -73: ; preds = %66 - %74 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %75 = load i64, ptr %74, align 8, !tbaa !18 - %76 = icmp ugt i64 %75, 8 - br i1 %76, label %77, label %79 - -77: ; preds = %73 - %78 = lshr i64 %75, 1 + %65 = getelementptr inbounds %struct.stbds_hash_bucket, ptr %62, i64 %63, i32 1 + %66 = getelementptr inbounds nuw [8 x i64], ptr %65, i64 0, i64 %64 + store i64 %27, ptr %66, align 8, !tbaa !10 + br label %67 + +67: ; preds = %.thread, %61, %46 + %68 = load i64, ptr %11, align 8, !tbaa !3 + %69 = add i64 %68, -1 + store i64 %69, ptr %11, align 8, !tbaa !3 + %70 = load i64, ptr %30, align 8, !tbaa !21 + %71 = getelementptr inbounds nuw i8, ptr %13, i64 32 + %72 = load i64, ptr %71, align 8, !tbaa !24 + %73 = icmp ult i64 %70, %72 + br i1 %73, label %74, label %80 + +74: ; preds = %67 + %75 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %76 = load i64, ptr %75, align 8, !tbaa !18 + %77 = icmp ugt i64 %76, 8 + br i1 %77, label %78, label %80 + +78: ; preds = %74 + %79 = lshr i64 %76, 1 br label %.sink.split -79: ; preds = %73, %66 - %80 = load i64, ptr %33, align 8, !tbaa !20 - %81 = getelementptr inbounds nuw i8, ptr %13, i64 48 - %82 = load i64, ptr %81, align 8, !tbaa !23 - %83 = icmp ugt i64 %80, %82 - br i1 %83, label %84, label %88 +80: ; preds = %74, %67 + %81 = load i64, ptr %33, align 8, !tbaa !20 + %82 = getelementptr inbounds nuw i8, ptr %13, i64 48 + %83 = load i64, ptr %82, align 8, !tbaa !23 + %84 = icmp ugt i64 %81, %83 + br i1 %84, label %85, label %89 -84: ; preds = %79 - %85 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %86 = load i64, ptr %85, align 8, !tbaa !18 +85: ; preds = %80 + %86 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %87 = load i64, ptr %86, align 8, !tbaa !18 br label %.sink.split -.sink.split: ; preds = %84, %77 - %.sink93 = phi i64 [ %78, %77 ], [ %86, %84 ] - %87 = tail call ptr @stbds_make_hash_index(i64 noundef %.sink93, ptr noundef nonnull %13) - store ptr %87, ptr %12, align 8, !tbaa !37 +.sink.split: ; preds = %85, %78 + %.sink93 = phi i64 [ %79, %78 ], [ %87, %85 ] + %88 = tail call ptr @stbds_make_hash_index(i64 noundef %.sink93, ptr noundef nonnull %13) + store ptr %88, ptr %12, align 8, !tbaa !37 tail call void @free(ptr noundef nonnull %13) #21 - br label %88 + br label %89 -88: ; preds = %.sink.split, %8, %79, %16, %6 +89: ; preds = %.sink.split, %8, %80, %16, %6 ret ptr %0 } diff --git a/bench/stb/optimized/stb_image_resize2.ll b/bench/stb/optimized/stb_image_resize2.ll index 9e037dd1f41..e3a1584b2dc 100644 --- a/bench/stb/optimized/stb_image_resize2.ll +++ b/bench/stb/optimized/stb_image_resize2.ll @@ -30172,17 +30172,17 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %22 = icmp eq i32 %21, 6 %23 = add i32 %4, -1 %or.cond = icmp ult i32 %23, 2 - %or.cond110 = select i1 %22, i1 %or.cond, i1 false + %or.cond111 = select i1 %22, i1 %or.cond, i1 false %24 = add i32 %6, -1 %or.cond3 = icmp ult i32 %24, 2 - %or.cond111 = select i1 %or.cond110, i1 %or.cond3, i1 false - %spec.select = select i1 %or.cond111, i32 0, i32 %4 - %spec.select114 = select i1 %or.cond111, i32 0, i32 %6 + %or.cond112 = select i1 %or.cond111, i1 %or.cond3, i1 false + %spec.select = select i1 %or.cond112, i32 0, i32 %4 + %spec.select115 = select i1 %or.cond112, i32 0, i32 %6 br label %25 25: ; preds = %19, %2 %.097 = phi i32 [ %4, %2 ], [ %spec.select, %19 ] - %.096 = phi i32 [ %6, %2 ], [ %spec.select114, %19 ] + %.096 = phi i32 [ %6, %2 ], [ %spec.select115, %19 ] %26 = icmp eq i32 %11, 0 br i1 %26, label %27, label %38 @@ -30207,7 +30207,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ br i1 %39, label %42, label %._crit_edge ._crit_edge: ; preds = %38 - %.pre117 = zext i32 %.096 to i64 + %.pre118 = zext i32 %.096 to i64 br label %51 42: ; preds = %38 @@ -30223,7 +30223,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ br label %51 51: ; preds = %._crit_edge, %42 - %.pre-phi = phi i64 [ %.pre117, %._crit_edge ], [ %46, %42 ] + %.pre-phi = phi i64 [ %.pre118, %._crit_edge ], [ %46, %42 ] %52 = getelementptr inbounds nuw i8, ptr %1, i64 64 %53 = load ptr, ptr %52, align 8, !tbaa !984 %54 = getelementptr inbounds nuw i8, ptr %0, i64 488 @@ -30256,7 +30256,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ store ptr %76, ptr %77, align 8, !tbaa !902 %78 = icmp eq i32 %.097, 0 %79 = icmp eq i32 %.097, 3 - switch i32 %.097, label %102 [ + switch i32 %.097, label %101 [ i32 3, label %80 i32 0, label %80 ] @@ -30278,56 +30278,58 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %or.cond7 = select i1 %78, i1 %87, i1 false %88 = icmp eq i32 %.096, 3 %or.cond9 = select i1 %79, i1 %88, i1 false - %or.cond112 = select i1 %or.cond7, i1 true, i1 %or.cond9 - %spec.select115 = zext i1 %or.cond112 to i64 + %or.cond113 = select i1 %or.cond7, i1 true, i1 %or.cond9 + %spec.select116 = zext i1 %or.cond113 to i64 br label %89 89: ; preds = %86, %83, %80 - %.095 = phi i64 [ 0, %80 ], [ 0, %83 ], [ %spec.select115, %86 ] + %.095 = phi i64 [ 0, %80 ], [ 0, %83 ], [ %spec.select116, %86 ] %90 = getelementptr inbounds nuw i8, ptr %0, i64 472 %91 = load i32, ptr %90, align 8, !tbaa !966 %92 = icmp ult i32 %91, 5 - br i1 %92, label %93, label %96 + br i1 %92, label %98, label %93 93: ; preds = %89 - %94 = zext i1 %79 to i64 - %95 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @__const.stbir__update_info_from_resize.decode_simple_scaled_or_not, i64 0, i64 %94, i64 %.095 - br label %117 + %94 = add i32 %91, -5 + %95 = urem i32 %94, 6 + %96 = zext nneg i32 %95 to i64 + %97 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.decode_alphas_scaled_or_not, i64 0, i64 %96 + br label %98 -96: ; preds = %89 - %97 = add i32 %91, -5 - %98 = urem i32 %97, 6 - %99 = zext nneg i32 %98 to i64 - %100 = zext i1 %79 to i64 - %101 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.decode_alphas_scaled_or_not, i64 0, i64 %99, i64 %100, i64 %.095 +98: ; preds = %89, %93 + %.sink = phi ptr [ %97, %93 ], [ @__const.stbir__update_info_from_resize.decode_simple_scaled_or_not, %89 ] + %99 = zext i1 %79 to i64 + %100 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr %.sink, i64 0, i64 %99 + %.099.in = getelementptr inbounds nuw [2 x ptr], ptr %100, i64 0, i64 %.095 br label %117 -102: ; preds = %51 - %103 = getelementptr inbounds nuw i8, ptr %0, i64 472 - %104 = load i32, ptr %103, align 8, !tbaa !966 - %105 = icmp ult i32 %104, 5 - br i1 %105, label %106, label %110 +101: ; preds = %51 + %102 = getelementptr inbounds nuw i8, ptr %0, i64 472 + %103 = load i32, ptr %102, align 8, !tbaa !966 + %104 = icmp ult i32 %103, 5 + br i1 %104, label %105, label %109 -106: ; preds = %102 - %107 = add i32 %.097, -1 - %108 = zext i32 %107 to i64 - %109 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.decode_simple, i64 0, i64 %108 +105: ; preds = %101 + %106 = add i32 %.097, -1 + %107 = zext i32 %106 to i64 + %108 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.decode_simple, i64 0, i64 %107 br label %117 -110: ; preds = %102 - %111 = add i32 %104, -5 - %112 = urem i32 %111, 6 - %113 = zext nneg i32 %112 to i64 +109: ; preds = %101 + %110 = add i32 %103, -5 + %111 = urem i32 %110, 6 + %112 = zext nneg i32 %111 to i64 + %113 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.decode_alphas, i64 0, i64 %112 %114 = add i32 %.097, -1 %115 = zext i32 %114 to i64 - %116 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.decode_alphas, i64 0, i64 %113, i64 %115 + %116 = getelementptr inbounds nuw [5 x ptr], ptr %113, i64 0, i64 %115 br label %117 -117: ; preds = %93, %96, %106, %110 - %.1100.in = phi ptr [ %109, %106 ], [ %116, %110 ], [ %95, %93 ], [ %101, %96 ] +117: ; preds = %105, %109, %98 + %.1100.in = phi ptr [ %.099.in, %98 ], [ %108, %105 ], [ %116, %109 ] %.1100 = load ptr, ptr %.1100.in, align 8, !tbaa !42 %118 = icmp eq i32 %.096, 3 - switch i32 %.096, label %140 [ + switch i32 %.096, label %139 [ i32 3, label %119 i32 0, label %119 ] @@ -30348,53 +30350,55 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %126 = or i32 %.096, %.097 %or.cond13 = icmp eq i32 %126, 0 %or.cond15 = and i1 %79, %118 - %or.cond113 = or i1 %or.cond13, %or.cond15 - %spec.select116 = zext i1 %or.cond113 to i64 + %or.cond114 = or i1 %or.cond13, %or.cond15 + %spec.select117 = zext i1 %or.cond114 to i64 br label %127 127: ; preds = %125, %122, %119 - %.0 = phi i64 [ 0, %119 ], [ 0, %122 ], [ %spec.select116, %125 ] + %.0 = phi i64 [ 0, %119 ], [ 0, %122 ], [ %spec.select117, %125 ] %128 = getelementptr inbounds nuw i8, ptr %0, i64 476 %129 = load i32, ptr %128, align 4, !tbaa !967 %130 = icmp ult i32 %129, 5 - br i1 %130, label %131, label %134 + br i1 %130, label %136, label %131 131: ; preds = %127 - %132 = zext i1 %118 to i64 - %133 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr @__const.stbir__update_info_from_resize.encode_simple_scaled_or_not, i64 0, i64 %132, i64 %.0 - br label %155 + %132 = add i32 %129, -5 + %133 = urem i32 %132, 6 + %134 = zext nneg i32 %133 to i64 + %135 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.encode_alphas_scaled_or_not, i64 0, i64 %134 + br label %136 -134: ; preds = %127 - %135 = add i32 %129, -5 - %136 = urem i32 %135, 6 - %137 = zext nneg i32 %136 to i64 - %138 = zext i1 %118 to i64 - %139 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.encode_alphas_scaled_or_not, i64 0, i64 %137, i64 %138, i64 %.0 +136: ; preds = %127, %131 + %.sink120 = phi ptr [ %135, %131 ], [ @__const.stbir__update_info_from_resize.encode_simple_scaled_or_not, %127 ] + %137 = zext i1 %118 to i64 + %138 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr %.sink120, i64 0, i64 %137 + %.098.in = getelementptr inbounds nuw [2 x ptr], ptr %138, i64 0, i64 %.0 br label %155 -140: ; preds = %117 - %141 = getelementptr inbounds nuw i8, ptr %0, i64 476 - %142 = load i32, ptr %141, align 4, !tbaa !967 - %143 = icmp ult i32 %142, 5 - br i1 %143, label %144, label %148 +139: ; preds = %117 + %140 = getelementptr inbounds nuw i8, ptr %0, i64 476 + %141 = load i32, ptr %140, align 4, !tbaa !967 + %142 = icmp ult i32 %141, 5 + br i1 %142, label %143, label %147 -144: ; preds = %140 - %145 = add i32 %.096, -1 - %146 = zext i32 %145 to i64 - %147 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.encode_simple, i64 0, i64 %146 +143: ; preds = %139 + %144 = add i32 %.096, -1 + %145 = zext i32 %144 to i64 + %146 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.encode_simple, i64 0, i64 %145 br label %155 -148: ; preds = %140 - %149 = add i32 %142, -5 - %150 = urem i32 %149, 6 - %151 = zext nneg i32 %150 to i64 +147: ; preds = %139 + %148 = add i32 %141, -5 + %149 = urem i32 %148, 6 + %150 = zext nneg i32 %149 to i64 + %151 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.encode_alphas, i64 0, i64 %150 %152 = add i32 %.096, -1 %153 = zext i32 %152 to i64 - %154 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.encode_alphas, i64 0, i64 %151, i64 %153 + %154 = getelementptr inbounds nuw [5 x ptr], ptr %151, i64 0, i64 %153 br label %155 -155: ; preds = %131, %134, %144, %148 - %.1.in = phi ptr [ %147, %144 ], [ %154, %148 ], [ %133, %131 ], [ %139, %134 ] +155: ; preds = %143, %147, %136 + %.1.in = phi ptr [ %.098.in, %136 ], [ %146, %143 ], [ %154, %147 ] %.1 = load ptr, ptr %.1.in, align 8, !tbaa !42 %156 = getelementptr inbounds nuw i8, ptr %0, i64 336 store i32 %.097, ptr %156, align 8, !tbaa !449 diff --git a/bench/tev/optimized/UberShader.ll b/bench/tev/optimized/UberShader.ll index 9021dfe319f..78c3160766e 100644 --- a/bench/tev/optimized/UberShader.ll +++ b/bench/tev/optimized/UberShader.ll @@ -1577,30 +1577,32 @@ define dso_local void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_(ptr br label %7 7: ; preds = %7, %3 - %.05.i = phi i64 [ 0, %3 ], [ %9, %7 ] - %8 = getelementptr inbounds nuw [3 x [3 x float]], ptr %5, i64 0, i64 %.05.i, i64 %.05.i - store float 0.000000e+00, ptr %8, align 4 - %9 = add nuw nsw i64 %.05.i, 1 - %exitcond.not.i = icmp eq i64 %9, 3 + %.05.i = phi i64 [ 0, %3 ], [ %10, %7 ] + %8 = getelementptr inbounds nuw [3 x [3 x float]], ptr %5, i64 0, i64 %.05.i + %9 = getelementptr inbounds nuw [3 x float], ptr %8, i64 0, i64 %.05.i + store float 0.000000e+00, ptr %9, align 4 + %10 = add nuw nsw i64 %.05.i, 1 + %exitcond.not.i = icmp eq i64 %10, 3 br i1 %exitcond.not.i, label %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit, label %7, !llvm.loop !27 _ZN7nanogui6MatrixIfLm3EEC2Ef.exit: ; preds = %7 store i8 0, ptr %6, align 4 - %10 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store i8 0, ptr %10, align 4 + %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i8 0, ptr %11, align 4 call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %4, i8 0, i64 36, i1 false) - br label %11 + br label %12 -11: ; preds = %11, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit - %.05.i.i = phi i64 [ 0, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit ], [ %13, %11 ] - %12 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %.05.i.i, i64 %.05.i.i - store float 0.000000e+00, ptr %12, align 4 - %13 = add nuw nsw i64 %.05.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %13, 3 - br i1 %exitcond.not.i.i, label %_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit, label %11, !llvm.loop !27 +12: ; preds = %12, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit + %.05.i.i = phi i64 [ 0, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit ], [ %15, %12 ] + %13 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %.05.i.i + %14 = getelementptr inbounds nuw [3 x float], ptr %13, i64 0, i64 %.05.i.i + store float 0.000000e+00, ptr %14, align 4 + %15 = add nuw nsw i64 %.05.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %15, 3 + br i1 %exitcond.not.i.i, label %_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit, label %12, !llvm.loop !27 -_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit: ; preds = %11 +_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit: ; preds = %12 call void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEES7_SB_fffbNS_8ETonemapENS_7EMetricERKNSt3__18optionalINS_3BoxIiLj2EEEEE(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 4 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef null, ptr noundef nonnull readonly align 4 dereferenceable(36) %5, ptr noundef null, ptr noundef nonnull align 4 dereferenceable(36) %4, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i1 noundef zeroext false, i32 noundef 0, i32 noundef 0, ptr noundef nonnull readonly align 4 dereferenceable(17) %6) call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) ret void @@ -1613,11 +1615,12 @@ define dso_local void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1 br label %13 13: ; preds = %13, %11 - %.05.i = phi i64 [ 0, %11 ], [ %15, %13 ] - %14 = getelementptr inbounds nuw [3 x [3 x float]], ptr %12, i64 0, i64 %.05.i, i64 %.05.i - store float 0.000000e+00, ptr %14, align 4 - %15 = add nuw nsw i64 %.05.i, 1 - %exitcond.not.i = icmp eq i64 %15, 3 + %.05.i = phi i64 [ 0, %11 ], [ %16, %13 ] + %14 = getelementptr inbounds nuw [3 x [3 x float]], ptr %12, i64 0, i64 %.05.i + %15 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %.05.i + store float 0.000000e+00, ptr %15, align 4 + %16 = add nuw nsw i64 %.05.i, 1 + %exitcond.not.i = icmp eq i64 %16, 3 br i1 %exitcond.not.i, label %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit, label %13, !llvm.loop !27 _ZN7nanogui6MatrixIfLm3EEC2Ef.exit: ; preds = %13 diff --git a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll index cf1f19ed564..786270b4281 100644 --- a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll +++ b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll @@ -747,73 +747,74 @@ define void @_RNvMNtCs8mTrBI1stz4_15turborepo_vt1006parserNtB2_6Parser7process(p %32 = getelementptr inbounds nuw [256 x i8], ptr @_RNvNtCscmPyG4XWoQZ_3vte5table13STATE_CHANGES, i64 0, i64 %31 %33 = load i8, ptr %32, align 1, !noalias !78, !noundef !4 %34 = icmp eq i8 %33, 0 - br i1 %34, label %35, label %38 + br i1 %34, label %35, label %39 35: ; preds = %30 - %36 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_RNvNtCscmPyG4XWoQZ_3vte5table13STATE_CHANGES, i64 0, i64 %23, i64 %31 - %37 = load i8, ptr %36, align 1, !noalias !78, !noundef !4 - br label %38 - -38: ; preds = %35, %30 - %.sroa.01.0.i = phi i8 [ %37, %35 ], [ %33, %30 ] - %39 = and i8 %.sroa.01.0.i, 15 - %40 = lshr i8 %.sroa.01.0.i, 4 - %41 = icmp eq i8 %39, 0 - br i1 %41, label %42, label %43 - -42: ; preds = %38 - call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %40, i8 noundef %21) + %36 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_RNvNtCscmPyG4XWoQZ_3vte5table13STATE_CHANGES, i64 0, i64 %23 + %37 = getelementptr inbounds nuw [256 x i8], ptr %36, i64 0, i64 %31 + %38 = load i8, ptr %37, align 1, !noalias !78, !noundef !4 + br label %39 + +39: ; preds = %35, %30 + %.sroa.01.0.i = phi i8 [ %38, %35 ], [ %33, %30 ] + %40 = and i8 %.sroa.01.0.i, 15 + %41 = lshr i8 %.sroa.01.0.i, 4 + %42 = icmp eq i8 %40, 0 + br i1 %42, label %43, label %44 + +43: ; preds = %39 + call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %41, i8 noundef %21) br label %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit -43: ; preds = %38 +44: ; preds = %39 %cond.i.i = icmp eq i8 %22, 13 - br i1 %cond.i.i, label %46, label %44 + br i1 %cond.i.i, label %47, label %45 -44: ; preds = %46, %43 - %45 = icmp ult i8 %.sroa.01.0.i, 16 - br i1 %45, label %47, label %48 +45: ; preds = %47, %44 + %46 = icmp ult i8 %.sroa.01.0.i, 16 + br i1 %46, label %48, label %49 -46: ; preds = %43 +47: ; preds = %44 call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef 8, i8 noundef %21) - br label %44 - -47: ; preds = %48, %44 - switch i8 %39, label %49 [ - i8 1, label %50 - i8 5, label %50 - i8 9, label %51 - i8 10, label %50 - i8 13, label %52 + br label %45 + +48: ; preds = %49, %45 + switch i8 %40, label %50 [ + i8 1, label %51 + i8 5, label %51 + i8 9, label %52 + i8 10, label %51 + i8 13, label %53 ] -48: ; preds = %44 - call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %40, i8 noundef %21) - br label %47 +49: ; preds = %45 + call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %41, i8 noundef %21) + br label %48 -49: ; preds = %52, %51, %50, %47 - store i8 %39, ptr %8, align 8, !alias.scope !86, !noalias !89 +50: ; preds = %53, %52, %51, %48 + store i8 %40, ptr %8, align 8, !alias.scope !86, !noalias !89 br label %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit -50: ; preds = %47, %47, %47 +51: ; preds = %48, %48, %48 store i64 0, ptr %11, align 8, !alias.scope !91, !noalias !94 store i8 0, ptr %12, align 1, !alias.scope !91, !noalias !94 store i16 0, ptr %13, align 2, !alias.scope !91, !noalias !94 store i8 0, ptr %14, align 8, !alias.scope !91, !noalias !94 store i64 0, ptr %15, align 8, !alias.scope !91, !noalias !94 - br label %49 + br label %50 -51: ; preds = %47 +52: ; preds = %48 call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef 6, i8 noundef %21) - br label %49 + br label %50 -52: ; preds = %47 +53: ; preds = %48 call void @_RNvYINtNtCslmLCWD9els8_8arrayvec8arrayvec8ArrayVechKj400_ENtNtB7_13arrayvec_impl12ArrayVecImpl8truncateCscmPyG4XWoQZ_3vte(ptr noalias noundef nonnull align 4 dereferenceable(1028) %9, i64 noundef 0), !noalias !96 store i64 0, ptr %10, align 8, !alias.scope !99, !noalias !101 - br label %49 + br label %50 -_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit: ; preds = %25, %42, %49 - %53 = icmp eq ptr %20, %5 - br i1 %53, label %._crit_edge, label %19 +_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit: ; preds = %25, %43, %50 + %54 = icmp eq ptr %20, %5 + br i1 %54, label %._crit_edge, label %19 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/verilator/optimized/V3PreProc.ll b/bench/verilator/optimized/V3PreProc.ll index fe372907807..b87353738af 100644 --- a/bench/verilator/optimized/V3PreProc.ll +++ b/bench/verilator/optimized/V3PreProc.ll @@ -73940,7 +73940,7 @@ define linkonce_odr dso_local void @_ZN9V3PreExpr5parseEv(ptr noundef nonnull al %28 = getelementptr inbounds nuw i8, ptr %0, i64 80 br label %32 -.critedge: ; preds = %153, %150, %144, %145, %82, %79 +.critedge: ; preds = %154, %151, %145, %146, %82, %79 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #45 %29 = load ptr, ptr %6, align 8, !tbaa !1349 %30 = load ptr, ptr %7, align 8, !tbaa !1349 @@ -74046,7 +74046,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #45 - br label %175 + br label %176 73: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE9pop_frontEv.exit %74 = load i8, ptr %15, align 8, !tbaa !1209 @@ -74101,161 +74101,162 @@ _ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit: ; preds = %91, %94 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %99, i64 -8 %.sroa.4.0.copyload = load i8, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !1367 %100 = zext i8 %.sroa.4.0.copyload to i64 - %101 = zext i8 %74 to i64 - %102 = getelementptr inbounds nuw [10 x [10 x i8]], ptr %22, i64 0, i64 %100, i64 %101 - %103 = load i8, ptr %102, align 1, !tbaa !1580 - %104 = call noundef i32 @_ZN9V3PreExpr5debugEv() - %105 = icmp sgt i32 %104, 8 - br i1 %105, label %106, label %144, !prof !797 - -106: ; preds = %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit - %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.62, i64 noundef 2) + %101 = getelementptr inbounds nuw [10 x [10 x i8]], ptr %22, i64 0, i64 %100 + %102 = zext i8 %74 to i64 + %103 = getelementptr inbounds nuw [10 x i8], ptr %101, i64 0, i64 %102 + %104 = load i8, ptr %103, align 1, !tbaa !1580 + %105 = call noundef i32 @_ZN9V3PreExpr5debugEv() + %106 = icmp sgt i32 %105, 8 + br i1 %106, label %107, label %145, !prof !797 + +107: ; preds = %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit + %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.62, i64 noundef 2) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #45 call void @_ZN7V3Error7lineStrB5cxx11EPKci(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull @.str.263, i32 noundef 254) - %108 = load ptr, ptr %4, align 8, !tbaa !114 - %109 = load i64, ptr %23, align 8, !tbaa !115 - %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef %108, i64 noundef %109) - to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 unwind label %136 + %109 = load ptr, ptr %4, align 8, !tbaa !114 + %110 = load i64, ptr %23, align 8, !tbaa !115 + %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef %109, i64 noundef %110) + to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 unwind label %137 -_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16: ; preds = %106 - %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull @.str.489, i64 noundef 11) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 unwind label %136 +_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16: ; preds = %107 + %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull @.str.489, i64 noundef 11) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 unwind label %137 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 - %112 = zext i8 %103 to i64 - %113 = getelementptr inbounds nuw [5 x ptr], ptr @_ZZN9V3PreExpr11actionAsciiENS_8action_tEE5names, i64 0, i64 %112 - %114 = load ptr, ptr %113, align 8, !tbaa !4 - %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef %114) - to label %116 unwind label %136 - -116: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 - %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull @.str.490, i64 noundef 17) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 unwind label %136 - -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %116 - %118 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %100 - %119 = load ptr, ptr %118, align 8, !tbaa !4 - %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef %119) - to label %121 unwind label %136 - -121: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 - %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull @.str.491, i64 noundef 2) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 unwind label %136 - -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %121 - %123 = load i8, ptr %15, align 8, !tbaa !1209 - %124 = zext i8 %123 to i64 - %125 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %124 - %126 = load ptr, ptr %125, align 8, !tbaa !4 - %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef %126) - to label %128 unwind label %136 - -128: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 - %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull @.str.492, i64 noundef 2) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 unwind label %136 - -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20: ; preds = %128 - %130 = load ptr, ptr %4, align 8, !tbaa !114 - %131 = icmp eq ptr %130, %24 - br i1 %131, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 + %113 = zext i8 %104 to i64 + %114 = getelementptr inbounds nuw [5 x ptr], ptr @_ZZN9V3PreExpr11actionAsciiENS_8action_tEE5names, i64 0, i64 %113 + %115 = load ptr, ptr %114, align 8, !tbaa !4 + %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef %115) + to label %117 unwind label %137 + +117: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 + %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull @.str.490, i64 noundef 17) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 unwind label %137 + +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %117 + %119 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %100 + %120 = load ptr, ptr %119, align 8, !tbaa !4 + %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef %120) + to label %122 unwind label %137 + +122: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 + %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull @.str.491, i64 noundef 2) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 unwind label %137 + +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %122 + %124 = load i8, ptr %15, align 8, !tbaa !1209 + %125 = zext i8 %124 to i64 + %126 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %125 + %127 = load ptr, ptr %126, align 8, !tbaa !4 + %128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef %127) + to label %129 unwind label %137 + +129: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 + %130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull @.str.492, i64 noundef 2) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 unwind label %137 + +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20: ; preds = %129 + %131 = load ptr, ptr %4, align 8, !tbaa !114 + %132 = icmp eq ptr %131, %24 + br i1 %132, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 - %132 = load i64, ptr %23, align 8, !tbaa !115 - %133 = icmp ult i64 %132, 16 - call void @llvm.assume(i1 %133) + %133 = load i64, ptr %23, align 8, !tbaa !115 + %134 = icmp ult i64 %133, 16 + call void @llvm.assume(i1 %134) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 - %134 = load i64, ptr %24, align 8, !tbaa !27 - %135 = add i64 %134, 1 - call void @_ZdlPvm(ptr noundef %130, i64 noundef %135) #46 + %135 = load i64, ptr %24, align 8, !tbaa !27 + %136 = add i64 %135, 1 + call void @_ZdlPvm(ptr noundef %131, i64 noundef %136) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #45 - br label %144 + br label %145 -136: ; preds = %128, %121, %116, %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16, %106, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 - %137 = landingpad { ptr, i32 } +137: ; preds = %129, %122, %117, %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16, %107, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 + %138 = landingpad { ptr, i32 } cleanup - %138 = load ptr, ptr %4, align 8, !tbaa !114 - %139 = icmp eq ptr %138, %24 - br i1 %139, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24 + %139 = load ptr, ptr %4, align 8, !tbaa !114 + %140 = icmp eq ptr %139, %24 + br i1 %140, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25: ; preds = %136 - %140 = load i64, ptr %23, align 8, !tbaa !115 - %141 = icmp ult i64 %140, 16 - call void @llvm.assume(i1 %141) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25: ; preds = %137 + %141 = load i64, ptr %23, align 8, !tbaa !115 + %142 = icmp ult i64 %141, 16 + call void @llvm.assume(i1 %142) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24: ; preds = %136 - %142 = load i64, ptr %24, align 8, !tbaa !27 - %143 = add i64 %142, 1 - call void @_ZdlPvm(ptr noundef %138, i64 noundef %143) #46 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24: ; preds = %137 + %143 = load i64, ptr %24, align 8, !tbaa !27 + %144 = add i64 %143, 1 + call void @_ZdlPvm(ptr noundef %139, i64 noundef %144) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #45 - br label %175 + br label %176 -144: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23, %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit - switch i8 %103, label %._crit_edge.i.i [ - i8 2, label %145 - i8 3, label %146 +145: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23, %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit + switch i8 %104, label %._crit_edge.i.i [ + i8 2, label %146 + i8 3, label %147 i8 1, label %.critedge ] -145: ; preds = %144 +146: ; preds = %145 call void @_ZN9V3PreExpr6reduceEv(ptr noundef nonnull align 8 dereferenceable(352) %0) br label %.critedge -146: ; preds = %144 - %147 = load ptr, ptr %18, align 8, !tbaa !1368 - %148 = load ptr, ptr %25, align 8, !tbaa !1369 - %149 = getelementptr inbounds i8, ptr %148, i64 -16 - %.not.i27 = icmp eq ptr %147, %149 - br i1 %.not.i27, label %153, label %150 - -150: ; preds = %146 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef nonnull align 8 dereferenceable(16) %2, i64 16, i1 false), !tbaa.struct !1366 - %151 = load ptr, ptr %18, align 8, !tbaa !1368 - %152 = getelementptr inbounds nuw i8, ptr %151, i64 16 - store ptr %152, ptr %18, align 8, !tbaa !1368 +147: ; preds = %145 + %148 = load ptr, ptr %18, align 8, !tbaa !1368 + %149 = load ptr, ptr %25, align 8, !tbaa !1369 + %150 = getelementptr inbounds i8, ptr %149, i64 -16 + %.not.i27 = icmp eq ptr %148, %150 + br i1 %.not.i27, label %154, label %151 + +151: ; preds = %147 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 8 dereferenceable(16) %2, i64 16, i1 false), !tbaa.struct !1366 + %152 = load ptr, ptr %18, align 8, !tbaa !1368 + %153 = getelementptr inbounds nuw i8, ptr %152, i64 16 + store ptr %153, ptr %18, align 8, !tbaa !1368 br label %.critedge -153: ; preds = %146 +154: ; preds = %147 call void @_ZNSt5dequeI14V3PreExprTokenSaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef nonnull align 8 dereferenceable(16) %2) br label %.critedge -._crit_edge.i.i: ; preds = %144 - %154 = load ptr, ptr %2, align 8, !tbaa !1206 - %155 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error11v3errorPrepB5cxx11E11V3ErrorCode(i8 5) - %156 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull @.str.493, i64 noundef 36) +._crit_edge.i.i: ; preds = %145 + %155 = load ptr, ptr %2, align 8, !tbaa !1206 + %156 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error11v3errorPrepB5cxx11E11V3ErrorCode(i8 5) + %157 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull @.str.493, i64 noundef 36) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #45 - %158 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store ptr %158, ptr %5, align 8, !tbaa !244 - %159 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 0, ptr %159, align 8, !tbaa !115 - store i8 0, ptr %158, align 8, !tbaa !27 - invoke void @_ZN8FileLine10v3errorEndERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEERKNS0_12basic_stringIcS3_S4_EE(ptr noundef nonnull align 8 dereferenceable(40) %154, ptr noundef nonnull align 8 dereferenceable(112) %156, ptr noundef nonnull align 8 dereferenceable(32) %5) - to label %160 unwind label %167 - -160: ; preds = %._crit_edge.i.i - %161 = load ptr, ptr %5, align 8, !tbaa !114 - %162 = icmp eq ptr %161, %158 - br i1 %162, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29: ; preds = %160 - %163 = load i64, ptr %159, align 8, !tbaa !115 - %164 = icmp ult i64 %163, 16 - call void @llvm.assume(i1 %164) + %159 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr %159, ptr %5, align 8, !tbaa !244 + %160 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 0, ptr %160, align 8, !tbaa !115 + store i8 0, ptr %159, align 8, !tbaa !27 + invoke void @_ZN8FileLine10v3errorEndERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEERKNS0_12basic_stringIcS3_S4_EE(ptr noundef nonnull align 8 dereferenceable(40) %155, ptr noundef nonnull align 8 dereferenceable(112) %157, ptr noundef nonnull align 8 dereferenceable(32) %5) + to label %161 unwind label %168 + +161: ; preds = %._crit_edge.i.i + %162 = load ptr, ptr %5, align 8, !tbaa !114 + %163 = icmp eq ptr %162, %159 + br i1 %163, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29: ; preds = %161 + %164 = load i64, ptr %160, align 8, !tbaa !115 + %165 = icmp ult i64 %164, 16 + call void @llvm.assume(i1 %165) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28: ; preds = %160 - %165 = load i64, ptr %158, align 8, !tbaa !27 - %166 = add i64 %165, 1 - call void @_ZdlPvm(ptr noundef %161, i64 noundef %166) #46 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28: ; preds = %161 + %166 = load i64, ptr %159, align 8, !tbaa !27 + %167 = add i64 %166, 1 + call void @_ZdlPvm(ptr noundef %162, i64 noundef %167) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 @@ -74263,31 +74264,31 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #45 br label %.loopexit -167: ; preds = %._crit_edge.i.i - %168 = landingpad { ptr, i32 } +168: ; preds = %._crit_edge.i.i + %169 = landingpad { ptr, i32 } cleanup - %169 = load ptr, ptr %5, align 8, !tbaa !114 - %170 = icmp eq ptr %169, %158 - br i1 %170, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31 + %170 = load ptr, ptr %5, align 8, !tbaa !114 + %171 = icmp eq ptr %170, %159 + br i1 %171, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32: ; preds = %167 - %171 = load i64, ptr %159, align 8, !tbaa !115 - %172 = icmp ult i64 %171, 16 - call void @llvm.assume(i1 %172) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32: ; preds = %168 + %172 = load i64, ptr %160, align 8, !tbaa !115 + %173 = icmp ult i64 %172, 16 + call void @llvm.assume(i1 %173) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31: ; preds = %167 - %173 = load i64, ptr %158, align 8, !tbaa !27 - %174 = add i64 %173, 1 - call void @_ZdlPvm(ptr noundef %169, i64 noundef %174) #46 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31: ; preds = %168 + %174 = load i64, ptr %159, align 8, !tbaa !27 + %175 = add i64 %174, 1 + call void @_ZdlPvm(ptr noundef %170, i64 noundef %175) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #45 - br label %175 + br label %176 -175: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 - %.pn.pn.pn = phi { ptr, i32 } [ %66, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 ], [ %168, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 ], [ %137, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 ] +176: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 + %.pn.pn.pn = phi { ptr, i32 } [ %66, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 ], [ %169, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 ], [ %138, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #45 resume { ptr, i32 } %.pn.pn.pn diff --git a/bench/wireshark/optimized/packet-ipmi-se.ll b/bench/wireshark/optimized/packet-ipmi-se.ll index 35d94eca916..5858628d532 100644 --- a/bench/wireshark/optimized/packet-ipmi-se.ll +++ b/bench/wireshark/optimized/packet-ipmi-se.ll @@ -2274,41 +2274,42 @@ define internal void @rs2d(ptr noundef %0, ptr readnone captures(none) %1, ptr n %wide.trip.count = zext nneg i32 %11 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %26 - %indvars.iv28 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next29, %26 ] +.lr.ph: ; preds = %.lr.ph.preheader, %27 + %indvars.iv28 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next29, %27 ] %indvars30 = trunc i64 %indvars.iv28 to i32 %12 = or disjoint i32 %indvars30, 2 %13 = getelementptr [2 x ptr], ptr @rs2d.tsel, i64 0, i64 %indvars.iv28 %14 = load ptr, ptr %13, align 8 %15 = load i32, ptr %14, align 4 %16 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %12, i32 noundef 1, i32 noundef %15, ptr noundef null, ptr noundef nonnull @.str.1187, i32 noundef %indvars30) - %17 = trunc i64 %indvars.iv28 to i32 - %18 = or i32 %17, 2 - br label %19 + %17 = getelementptr [2 x [8 x ptr]], ptr @rs2d.bsel, i64 0, i64 %indvars.iv28 + %18 = trunc i64 %indvars.iv28 to i32 + %19 = or i32 %18, 2 + br label %20 -19: ; preds = %.lr.ph, %25 - %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %25 ] - %20 = getelementptr [2 x [8 x ptr]], ptr @rs2d.bsel, i64 0, i64 %indvars.iv28, i64 %indvars.iv - %21 = load ptr, ptr %20, align 8 - %.not = icmp eq ptr %21, null - br i1 %.not, label %25, label %22 +20: ; preds = %.lr.ph, %26 + %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %26 ] + %21 = getelementptr [8 x ptr], ptr %17, i64 0, i64 %indvars.iv + %22 = load ptr, ptr %21, align 8 + %.not = icmp eq ptr %22, null + br i1 %.not, label %26, label %23 -22: ; preds = %19 - %23 = load i32, ptr %21, align 4 - %24 = tail call ptr @proto_tree_add_item(ptr noundef %16, i32 noundef %23, ptr noundef %0, i32 noundef %18, i32 noundef 1, i32 noundef -2147483648) - br label %25 +23: ; preds = %20 + %24 = load i32, ptr %22, align 4 + %25 = tail call ptr @proto_tree_add_item(ptr noundef %16, i32 noundef %24, ptr noundef %0, i32 noundef %19, i32 noundef 1, i32 noundef -2147483648) + br label %26 -25: ; preds = %19, %22 +26: ; preds = %20, %23 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %.not31 = icmp eq i64 %indvars.iv, 0 - br i1 %.not31, label %26, label %19, !llvm.loop !6 + br i1 %.not31, label %27, label %20, !llvm.loop !6 -26: ; preds = %25 +27: ; preds = %26 %indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1 %exitcond.not = icmp eq i64 %indvars.iv.next29, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !8 -._crit_edge: ; preds = %26, %3 +._crit_edge: ; preds = %27, %3 ret void } @@ -3581,9 +3582,9 @@ define internal fastcc void @add_events(ptr noundef %0, i32 noundef range(i32 1, %7 = icmp slt i32 %1, %6 br i1 %7, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %5, %28 - %indvars.iv35 = phi i64 [ %indvars.iv.next36, %28 ], [ 0, %5 ] - %.033 = phi i32 [ %29, %28 ], [ %1, %5 ] +.lr.ph: ; preds = %5, %29 + %indvars.iv35 = phi i64 [ %indvars.iv.next36, %29 ], [ 0, %5 ] + %.033 = phi i32 [ %30, %29 ], [ %1, %5 ] %8 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.033) %9 = zext i8 %8 to i32 %10 = getelementptr [4 x ptr], ptr @add_events.tsel, i64 0, i64 %indvars.iv35 @@ -3591,40 +3592,41 @@ define internal fastcc void @add_events(ptr noundef %0, i32 noundef range(i32 1, %12 = load i32, ptr %11, align 4 %13 = trunc nuw nsw i64 %indvars.iv35 to i32 %14 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.033, i32 noundef 1, i32 noundef %12, ptr noundef null, ptr noundef nonnull @.str.1180, ptr noundef %4, i32 noundef %13) - br label %15 + %15 = getelementptr [4 x [8 x ptr]], ptr @add_events.bsel, i64 0, i64 %indvars.iv35 + br label %16 -15: ; preds = %.lr.ph, %27 - %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %27 ] - %16 = getelementptr [4 x [8 x ptr]], ptr @add_events.bsel, i64 0, i64 %indvars.iv35, i64 %indvars.iv - %17 = load ptr, ptr %16, align 8 - %.not = icmp eq ptr %17, null - br i1 %.not, label %27, label %18 - -18: ; preds = %15 - %19 = trunc nuw nsw i64 %indvars.iv to i32 - %20 = shl nuw i32 1, %19 - %21 = load i32, ptr %17, align 4 - %22 = and i32 %20, %9 - %23 = zext nneg i32 %22 to i64 - %24 = icmp ne i32 %22, 0 - %25 = tail call ptr @tfs_get_string(i1 noundef zeroext %24, ptr noundef %3) - %26 = tail call ptr (ptr, i32, ptr, i32, i32, i64, ptr, ...) @proto_tree_add_boolean_format_value(ptr noundef %14, i32 noundef %21, ptr noundef %0, i32 noundef %.033, i32 noundef 1, i64 noundef %23, ptr noundef nonnull @.str.1132, ptr noundef %25) - br label %27 +16: ; preds = %.lr.ph, %28 + %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %28 ] + %17 = getelementptr [8 x ptr], ptr %15, i64 0, i64 %indvars.iv + %18 = load ptr, ptr %17, align 8 + %.not = icmp eq ptr %18, null + br i1 %.not, label %28, label %19 + +19: ; preds = %16 + %20 = trunc nuw nsw i64 %indvars.iv to i32 + %21 = shl nuw i32 1, %20 + %22 = load i32, ptr %18, align 4 + %23 = and i32 %21, %9 + %24 = zext nneg i32 %23 to i64 + %25 = icmp ne i32 %23, 0 + %26 = tail call ptr @tfs_get_string(i1 noundef zeroext %25, ptr noundef %3) + %27 = tail call ptr (ptr, i32, ptr, i32, i32, i64, ptr, ...) @proto_tree_add_boolean_format_value(ptr noundef %14, i32 noundef %22, ptr noundef %0, i32 noundef %.033, i32 noundef 1, i64 noundef %24, ptr noundef nonnull @.str.1132, ptr noundef %26) + br label %28 -27: ; preds = %15, %18 +28: ; preds = %16, %19 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %.not38 = icmp eq i64 %indvars.iv, 0 - br i1 %.not38, label %28, label %15, !llvm.loop !11 + br i1 %.not38, label %29, label %16, !llvm.loop !11 -28: ; preds = %27 +29: ; preds = %28 %indvars.iv.next36 = add nuw nsw i64 %indvars.iv35, 1 - %29 = add nuw nsw i32 %.033, 1 - %30 = icmp slt i32 %29, %6 - %31 = icmp samesign ult i64 %indvars.iv35, 3 - %32 = select i1 %30, i1 %31, i1 false - br i1 %32, label %.lr.ph, label %._crit_edge, !llvm.loop !12 + %30 = add nuw nsw i32 %.033, 1 + %31 = icmp slt i32 %30, %6 + %32 = icmp samesign ult i64 %indvars.iv35, 3 + %33 = select i1 %31, i1 %32, i1 false + br i1 %33, label %.lr.ph, label %._crit_edge, !llvm.loop !12 -._crit_edge: ; preds = %28, %5 +._crit_edge: ; preds = %29, %5 ret void } diff --git a/bench/wireshark/optimized/packet-rrc.ll b/bench/wireshark/optimized/packet-rrc.ll index 32b1c1a83ff..72d8a80231a 100644 --- a/bench/wireshark/optimized/packet-rrc.ll +++ b/bench/wireshark/optimized/packet-rrc.ll @@ -89147,7 +89147,7 @@ define internal i32 @dissect_rrc_RB_ActivationTimeInfo(ptr noundef %0, i32 nound %17 = icmp eq ptr %10, null %18 = icmp eq ptr %14, null %or.cond = select i1 %17, i1 true, i1 %18 - br i1 %or.cond, label %58, label %19 + br i1 %or.cond, label %59, label %19 19: ; preds = %5 %20 = getelementptr inbounds nuw i8, ptr %2, i64 48 @@ -89168,7 +89168,7 @@ private_data_get_ciphering_info.exit: ; preds = %19, %23 %29 = getelementptr inbounds nuw i8, ptr %28, i64 56 %30 = load ptr, ptr %29, align 8 %31 = icmp eq ptr %30, null - br i1 %31, label %58, label %32 + br i1 %31, label %59, label %32 32: ; preds = %private_data_get_ciphering_info.exit %33 = icmp eq ptr %28, null @@ -89207,12 +89207,13 @@ private_data_get_rlc_ciphering_sqn.exit: ; preds = %private_data_get_rb %53 = load i8, ptr %52, align 1, !range !6, !noundef !7 %54 = xor i8 %53, 1 %55 = zext i32 %48 to i64 - %56 = zext nneg i8 %54 to i64 - %57 = getelementptr [31 x [2 x i32]], ptr %30, i64 0, i64 %55, i64 %56 - store i32 %51, ptr %57, align 4 - br label %58 + %56 = getelementptr [31 x [2 x i32]], ptr %30, i64 0, i64 %55 + %57 = zext nneg i8 %54 to i64 + %58 = getelementptr [2 x i32], ptr %56, i64 0, i64 %57 + store i32 %51, ptr %58, align 4 + br label %59 -58: ; preds = %private_data_get_ciphering_info.exit, %5, %private_data_get_rlc_ciphering_sqn.exit +59: ; preds = %private_data_get_ciphering_info.exit, %5, %private_data_get_rlc_ciphering_sqn.exit ret i32 %16 } diff --git a/bench/wireshark/optimized/tvbuff_hpackhuff.ll b/bench/wireshark/optimized/tvbuff_hpackhuff.ll index f7efa126266..792846b3a18 100644 --- a/bench/wireshark/optimized/tvbuff_hpackhuff.ll +++ b/bench/wireshark/optimized/tvbuff_hpackhuff.ll @@ -16,53 +16,55 @@ define ptr @tvb_get_hpack_huffman_strbuf(ptr noundef %0, ptr noundef %1, i32 nou %.not24.i = icmp eq i32 %3, 0 br i1 %.not24.i, label %._crit_edge.thread.i, label %.lr.ph.i -.lr.ph.i: ; preds = %4, %32 - %9 = phi i16 [ %28, %32 ], [ 0, %4 ] - %.01926.i = phi ptr [ %10, %32 ], [ %5, %4 ] - %.02025.i = phi i64 [ %33, %32 ], [ %6, %4 ] +.lr.ph.i: ; preds = %4, %34 + %9 = phi i16 [ %30, %34 ], [ 0, %4 ] + %.01926.i = phi ptr [ %10, %34 ], [ %5, %4 ] + %.02025.i = phi i64 [ %35, %34 ], [ %6, %4 ] %10 = getelementptr i8, ptr %.01926.i, i64 1 %11 = load i8, ptr %.01926.i, align 1 %12 = and i16 %9, 511 %13 = zext nneg i16 %12 to i64 - %14 = zext i8 %11 to i32 - %15 = lshr i32 %14, 4 - %16 = zext nneg i32 %15 to i64 - %17 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %13, i64 %16 - %18 = load i16, ptr %17, align 2 - %.not22.i = icmp sgt i16 %18, -1 - br i1 %.not22.i, label %22, label %19 - -19: ; preds = %.lr.ph.i - %20 = getelementptr inbounds nuw i8, ptr %17, i64 2 - %21 = load i8, ptr %20, align 2 - tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %21) - br label %22 - -22: ; preds = %19, %.lr.ph.i - %23 = and i16 %18, 511 - %24 = zext nneg i16 %23 to i64 - %25 = and i32 %14, 15 - %26 = zext nneg i32 %25 to i64 - %27 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %24, i64 %26 - %28 = load i16, ptr %27, align 2 - %.not23.i = icmp sgt i16 %28, -1 - br i1 %.not23.i, label %32, label %29 - -29: ; preds = %22 - %30 = getelementptr inbounds nuw i8, ptr %27, i64 2 - %31 = load i8, ptr %30, align 2 - tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %31) - br label %32 - -32: ; preds = %29, %22 - %33 = add i64 %.02025.i, -1 - %.not.i = icmp eq i64 %33, 0 + %14 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %13 + %15 = zext i8 %11 to i32 + %16 = lshr i32 %15, 4 + %17 = zext nneg i32 %16 to i64 + %18 = getelementptr [16 x %struct.nghttp2_huff_decode], ptr %14, i64 0, i64 %17 + %19 = load i16, ptr %18, align 2 + %.not22.i = icmp sgt i16 %19, -1 + br i1 %.not22.i, label %23, label %20 + +20: ; preds = %.lr.ph.i + %21 = getelementptr inbounds nuw i8, ptr %18, i64 2 + %22 = load i8, ptr %21, align 2 + tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %22) + br label %23 + +23: ; preds = %20, %.lr.ph.i + %24 = and i16 %19, 511 + %25 = zext nneg i16 %24 to i64 + %26 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %25 + %27 = and i32 %15, 15 + %28 = zext nneg i32 %27 to i64 + %29 = getelementptr [16 x %struct.nghttp2_huff_decode], ptr %26, i64 0, i64 %28 + %30 = load i16, ptr %29, align 2 + %.not23.i = icmp sgt i16 %30, -1 + br i1 %.not23.i, label %34, label %31 + +31: ; preds = %23 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 2 + %33 = load i8, ptr %32, align 2 + tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %33) + br label %34 + +34: ; preds = %31, %23 + %35 = add i64 %.02025.i, -1 + %.not.i = icmp eq i64 %35, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !6 -._crit_edge.i: ; preds = %32 - %34 = and i16 %28, 16384 - %35 = icmp eq i16 %34, 0 - br i1 %35, label %._crit_edge.thread.i, label %get_hpack_huffman_strbuf.exit +._crit_edge.i: ; preds = %34 + %36 = and i16 %30, 16384 + %37 = icmp eq i16 %36, 0 + br i1 %37, label %._crit_edge.thread.i, label %get_hpack_huffman_strbuf.exit ._crit_edge.thread.i: ; preds = %._crit_edge.i, %4 tail call void @wmem_strbuf_destroy(ptr noundef %8) diff --git a/bench/yaml-cpp/optimized/stream.ll b/bench/yaml-cpp/optimized/stream.ll index 3fcd6d15374..f9f9dfb090c 100644 --- a/bench/yaml-cpp/optimized/stream.ll +++ b/bench/yaml-cpp/optimized/stream.ll @@ -55,12 +55,12 @@ define void @_ZN4YAML6StreamC2ERSi(ptr noundef nonnull align 8 dereferenceable(1 %16 = load i32, ptr %15, align 8, !tbaa !24 %17 = and i32 %16, 5 %.not35 = icmp eq i32 %17, 0 - br i1 %.not35, label %20, label %94 + br i1 %.not35, label %20, label %96 18: ; preds = %2 %19 = landingpad { ptr, i32 } cleanup - br label %98 + br label %100 20: ; preds = %8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #16 @@ -68,10 +68,10 @@ define void @_ZN4YAML6StreamC2ERSi(ptr noundef nonnull align 8 dereferenceable(1 br label %21 21: ; preds = %20, %.loopexit - %22 = phi i64 [ 0, %20 ], [ %58, %.loopexit ] + %22 = phi i64 [ 0, %20 ], [ %60, %.loopexit ] %.02644 = phi i32 [ 0, %20 ], [ %.127, %.loopexit ] %23 = invoke noundef i32 @_ZNSi3getEv(ptr noundef nonnull align 8 dereferenceable(16) %1) - to label %24 unwind label %52 + to label %24 unwind label %54 24: ; preds = %21 %25 = add i32 %.02644, 1 @@ -114,139 +114,141 @@ define void @_ZN4YAML6StreamC2ERSi(ptr noundef nonnull align 8 dereferenceable(1 _ZN4YAML15IntroCharTypeOfEi.exit: ; preds = %24, %28, %29, %30, %31, %32, %33, %.fold.split.i %.0.i = phi i64 [ 1, %28 ], [ 2, %29 ], [ 3, %30 ], [ 4, %31 ], [ 5, %32 ], [ 7, %24 ], [ %..i, %33 ], [ 0, %.fold.split.i ] - %35 = getelementptr inbounds nuw [18 x [8 x i32]], ptr @_ZN4YAMLL18s_introTransitionsE, i64 0, i64 %22, i64 %.0.i - %36 = load i32, ptr %35, align 4, !tbaa !34 - %37 = getelementptr inbounds nuw [18 x [8 x i8]], ptr @_ZN4YAMLL17s_introUngetCountE, i64 0, i64 %22, i64 %.0.i - %38 = load i8, ptr %37, align 1, !tbaa !36 - %39 = icmp sgt i8 %38, 0 - br i1 %39, label %40, label %.loopexit + %35 = getelementptr inbounds nuw [18 x [8 x i32]], ptr @_ZN4YAMLL18s_introTransitionsE, i64 0, i64 %22 + %36 = getelementptr inbounds nuw [8 x i32], ptr %35, i64 0, i64 %.0.i + %37 = load i32, ptr %36, align 4, !tbaa !34 + %38 = getelementptr inbounds nuw [18 x [8 x i8]], ptr @_ZN4YAMLL17s_introUngetCountE, i64 0, i64 %22 + %39 = getelementptr inbounds nuw [8 x i8], ptr %38, i64 0, i64 %.0.i + %40 = load i8, ptr %39, align 1, !tbaa !36 + %41 = icmp sgt i8 %40, 0 + br i1 %41, label %42, label %.loopexit -40: ; preds = %_ZN4YAML15IntroCharTypeOfEi.exit - %41 = load ptr, ptr %1, align 8, !tbaa !22 - %42 = getelementptr i8, ptr %41, i64 -24 - %43 = load i64, ptr %42, align 8 - %44 = getelementptr inbounds i8, ptr %1, i64 %43 - invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264) %44, i32 noundef 0) +42: ; preds = %_ZN4YAML15IntroCharTypeOfEi.exit + %43 = load ptr, ptr %1, align 8, !tbaa !22 + %44 = getelementptr i8, ptr %43, i64 -24 + %45 = load i64, ptr %44, align 8 + %46 = getelementptr inbounds i8, ptr %1, i64 %45 + invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264) %46, i32 noundef 0) to label %.preheader.preheader unwind label %.loopexit.split-lp -.preheader.preheader: ; preds = %40 - %45 = zext nneg i8 %38 to i32 - %46 = sext i32 %25 to i64 +.preheader.preheader: ; preds = %42 + %47 = zext nneg i8 %40 to i32 + %48 = sext i32 %25 to i64 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %54 - %indvars.iv = phi i64 [ %46, %.preheader.preheader ], [ %indvars.iv.next, %54 ] - %.043 = phi i32 [ %45, %.preheader.preheader ], [ %55, %54 ] +.preheader: ; preds = %.preheader.preheader, %56 + %indvars.iv = phi i64 [ %48, %.preheader.preheader ], [ %indvars.iv.next, %56 ] + %.043 = phi i32 [ %47, %.preheader.preheader ], [ %57, %56 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %47 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %indvars.iv.next - %48 = load i32, ptr %47, align 4, !tbaa !33 - %.not = icmp eq i32 %48, -1 - br i1 %.not, label %54, label %49 - -49: ; preds = %.preheader - %50 = trunc i32 %48 to i8 - %51 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7putbackEc(ptr noundef nonnull align 8 dereferenceable(16) %1, i8 noundef signext %50) - to label %54 unwind label %.loopexit37 - -52: ; preds = %21 - %53 = landingpad { ptr, i32 } + %49 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %indvars.iv.next + %50 = load i32, ptr %49, align 4, !tbaa !33 + %.not = icmp eq i32 %50, -1 + br i1 %.not, label %56, label %51 + +51: ; preds = %.preheader + %52 = trunc i32 %50 to i8 + %53 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7putbackEc(ptr noundef nonnull align 8 dereferenceable(16) %1, i8 noundef signext %52) + to label %56 unwind label %.loopexit37 + +54: ; preds = %21 + %55 = landingpad { ptr, i32 } cleanup - br label %97 + br label %99 -.loopexit37: ; preds = %49 +.loopexit37: ; preds = %51 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %97 + br label %99 -.loopexit.split-lp: ; preds = %40 +.loopexit.split-lp: ; preds = %42 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %97 + br label %99 -54: ; preds = %.preheader, %49 - %55 = add nsw i32 %.043, -1 - %56 = icmp sgt i32 %.043, 1 - br i1 %56, label %.preheader, label %.loopexit.loopexit, !llvm.loop !37 +56: ; preds = %.preheader, %51 + %57 = add nsw i32 %.043, -1 + %58 = icmp sgt i32 %.043, 1 + br i1 %58, label %.preheader, label %.loopexit.loopexit, !llvm.loop !37 -.loopexit.loopexit: ; preds = %54 - %57 = trunc nsw i64 %indvars.iv.next to i32 +.loopexit.loopexit: ; preds = %56 + %59 = trunc nsw i64 %indvars.iv.next to i32 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %_ZN4YAML15IntroCharTypeOfEi.exit - %.127 = phi i32 [ %25, %_ZN4YAML15IntroCharTypeOfEi.exit ], [ %57, %.loopexit.loopexit ] - %58 = zext i32 %36 to i64 - %59 = getelementptr inbounds nuw [19 x i8], ptr @_ZN4YAMLL17s_introFinalStateE, i64 0, i64 %58 - %60 = load i8, ptr %59, align 1, !tbaa !39, !range !41, !noundef !42 - %61 = trunc nuw i8 %60 to i1 - br i1 %61, label %62, label %21, !llvm.loop !43 - -62: ; preds = %.loopexit - %switch.tableidx = add i32 %36, -4 - %63 = icmp ult i32 %switch.tableidx, 8 - br i1 %63, label %switch.lookup, label %65 - -switch.lookup: ; preds = %62 - %64 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZN4YAML6StreamC2ERSi, i64 0, i64 %64 + %.127 = phi i32 [ %25, %_ZN4YAML15IntroCharTypeOfEi.exit ], [ %59, %.loopexit.loopexit ] + %60 = zext i32 %37 to i64 + %61 = getelementptr inbounds nuw [19 x i8], ptr @_ZN4YAMLL17s_introFinalStateE, i64 0, i64 %60 + %62 = load i8, ptr %61, align 1, !tbaa !39, !range !41, !noundef !42 + %63 = trunc nuw i8 %62 to i1 + br i1 %63, label %64, label %21, !llvm.loop !43 + +64: ; preds = %.loopexit + %switch.tableidx = add i32 %37, -4 + %65 = icmp ult i32 %switch.tableidx, 8 + br i1 %65, label %switch.lookup, label %67 + +switch.lookup: ; preds = %64 + %66 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZN4YAML6StreamC2ERSi, i64 0, i64 %66 %switch.load = load i32, ptr %switch.gep, align 4 - br label %65 + br label %67 -65: ; preds = %62, %switch.lookup - %.sink = phi i32 [ %switch.load, %switch.lookup ], [ 0, %62 ] +67: ; preds = %64, %switch.lookup + %.sink = phi i32 [ %switch.load, %switch.lookup ], [ 0, %64 ] store i32 %.sink, ptr %5, align 4, !tbaa !44 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %69 = load ptr, ptr %68, align 8, !tbaa !45 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 104 %71 = load ptr, ptr %70, align 8, !tbaa !45 - %72 = ptrtoint ptr %69 to i64 - %73 = ptrtoint ptr %71 to i64 - %74 = sub i64 %72, %73 - %75 = ashr exact i64 %74, 3 - %76 = icmp ne ptr %69, null - %.neg.i.i.i = sext i1 %76 to i64 - %77 = add nsw i64 %75, %.neg.i.i.i - %78 = shl nsw i64 %77, 9 - %79 = load ptr, ptr %66, align 8, !tbaa !46 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %81 = load ptr, ptr %80, align 8, !tbaa !47 - %82 = ptrtoint ptr %79 to i64 - %83 = ptrtoint ptr %81 to i64 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %85 = load ptr, ptr %84, align 8, !tbaa !48 - %86 = load ptr, ptr %67, align 8, !tbaa !46 - %87 = ptrtoint ptr %85 to i64 - %88 = ptrtoint ptr %86 to i64 - %89 = sub i64 %82, %83 - %90 = add i64 %89, %87 - %91 = add i64 %90, %78 - %.not36 = icmp eq i64 %91, %88 - br i1 %.not36, label %92, label %_ZNK4YAML6Stream11ReadAheadToEm.exit - -92: ; preds = %65 - %93 = invoke noundef zeroext i1 @_ZNK4YAML6Stream12_ReadAheadToEm(ptr noundef nonnull align 8 dereferenceable(136) %0, i64 noundef 0) - to label %_ZNK4YAML6Stream11ReadAheadToEm.exit unwind label %95 - -_ZNK4YAML6Stream11ReadAheadToEm.exit: ; preds = %65, %92 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %73 = load ptr, ptr %72, align 8, !tbaa !45 + %74 = ptrtoint ptr %71 to i64 + %75 = ptrtoint ptr %73 to i64 + %76 = sub i64 %74, %75 + %77 = ashr exact i64 %76, 3 + %78 = icmp ne ptr %71, null + %.neg.i.i.i = sext i1 %78 to i64 + %79 = add nsw i64 %77, %.neg.i.i.i + %80 = shl nsw i64 %79, 9 + %81 = load ptr, ptr %68, align 8, !tbaa !46 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %83 = load ptr, ptr %82, align 8, !tbaa !47 + %84 = ptrtoint ptr %81 to i64 + %85 = ptrtoint ptr %83 to i64 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %87 = load ptr, ptr %86, align 8, !tbaa !48 + %88 = load ptr, ptr %69, align 8, !tbaa !46 + %89 = ptrtoint ptr %87 to i64 + %90 = ptrtoint ptr %88 to i64 + %91 = sub i64 %84, %85 + %92 = add i64 %91, %89 + %93 = add i64 %92, %80 + %.not36 = icmp eq i64 %93, %90 + br i1 %.not36, label %94, label %_ZNK4YAML6Stream11ReadAheadToEm.exit + +94: ; preds = %67 + %95 = invoke noundef zeroext i1 @_ZNK4YAML6Stream12_ReadAheadToEm(ptr noundef nonnull align 8 dereferenceable(136) %0, i64 noundef 0) + to label %_ZNK4YAML6Stream11ReadAheadToEm.exit unwind label %97 + +_ZNK4YAML6Stream11ReadAheadToEm.exit: ; preds = %67, %94 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #16 - br label %94 + br label %96 -94: ; preds = %8, %_ZNK4YAML6Stream11ReadAheadToEm.exit +96: ; preds = %8, %_ZNK4YAML6Stream11ReadAheadToEm.exit ret void -95: ; preds = %92 - %96 = landingpad { ptr, i32 } +97: ; preds = %94 + %98 = landingpad { ptr, i32 } cleanup - br label %97 + br label %99 -97: ; preds = %.loopexit37, %.loopexit.split-lp, %52, %95 - %.pn.pn = phi { ptr, i32 } [ %96, %95 ], [ %53, %52 ], [ %lpad.loopexit, %.loopexit37 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +99: ; preds = %.loopexit37, %.loopexit.split-lp, %54, %97 + %.pn.pn = phi { ptr, i32 } [ %98, %97 ], [ %55, %54 ], [ %lpad.loopexit, %.loopexit37 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #16 - br label %98 + br label %100 -98: ; preds = %97, %18 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %97 ], [ %19, %18 ] +100: ; preds = %99, %18 + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %99 ], [ %19, %18 ] tail call void @_ZNSt5dequeIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #16 resume { ptr, i32 } %.pn.pn.pn } diff --git a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll index 0e8f9d7650b..10b8fab020f 100644 --- a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll +++ b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll @@ -18900,72 +18900,73 @@ define hidden void @"_ZN3vte15Parser$LT$_$GT$7advance17h0b335f80a3e540f3E.llvm.1 %18 = getelementptr inbounds nuw [256 x i8], ptr @_ZN3vte5table13STATE_CHANGES17hc24d991888848aafE, i64 0, i64 %17 %19 = load i8, ptr %18, align 1, !noundef !4 %20 = icmp eq i8 %19, 0 - br i1 %20, label %21, label %25 + br i1 %20, label %21, label %26 -"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit": ; preds = %36, %29, %8 +"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit": ; preds = %37, %30, %8 ret void 21: ; preds = %16 %22 = zext nneg i8 %6 to i64 - %23 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_ZN3vte5table13STATE_CHANGES17hc24d991888848aafE, i64 0, i64 %22, i64 %17 - %24 = load i8, ptr %23, align 1, !noundef !4 - br label %25 + %23 = getelementptr inbounds nuw [16 x [256 x i8]], ptr @_ZN3vte5table13STATE_CHANGES17hc24d991888848aafE, i64 0, i64 %22 + %24 = getelementptr inbounds nuw [256 x i8], ptr %23, i64 0, i64 %17 + %25 = load i8, ptr %24, align 1, !noundef !4 + br label %26 -25: ; preds = %16, %21 - %.sroa.01.0 = phi i8 [ %24, %21 ], [ %19, %16 ] - %26 = and i8 %.sroa.01.0, 15 - %27 = lshr i8 %.sroa.01.0, 4 - %28 = icmp eq i8 %26, 0 - br i1 %28, label %29, label %30 +26: ; preds = %16, %21 + %.sroa.01.0 = phi i8 [ %25, %21 ], [ %19, %16 ] + %27 = and i8 %.sroa.01.0, 15 + %28 = lshr i8 %.sroa.01.0, 4 + %29 = icmp eq i8 %27, 0 + br i1 %29, label %30, label %31 -29: ; preds = %25 - tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %27, i8 noundef %2) +30: ; preds = %26 + tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %28, i8 noundef %2) br label %"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit" -30: ; preds = %25 - switch i8 %6, label %31 [ +31: ; preds = %26 + switch i8 %6, label %32 [ i8 9, label %.sink.split.i - i8 13, label %33 + i8 13, label %34 ] -.sink.split.i: ; preds = %33, %30 - %.sink.i = phi i8 [ 8, %33 ], [ 14, %30 ] +.sink.split.i: ; preds = %34, %31 + %.sink.i = phi i8 [ 8, %34 ], [ 14, %31 ] tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef %.sink.i, i8 noundef %2) - br label %31 + br label %32 -31: ; preds = %.sink.split.i, %30 - %32 = icmp ult i8 %.sroa.01.0, 16 - br i1 %32, label %34, label %35 +32: ; preds = %.sink.split.i, %31 + %33 = icmp ult i8 %.sroa.01.0, 16 + br i1 %33, label %35, label %36 -33: ; preds = %30 +34: ; preds = %31 br label %.sink.split.i -34: ; preds = %35, %31 - switch i8 %26, label %36 [ +35: ; preds = %36, %32 + switch i8 %27, label %37 [ i8 1, label %.sink.split6.i i8 5, label %.sink.split6.i - i8 9, label %37 + i8 9, label %38 i8 10, label %.sink.split6.i - i8 13, label %38 + i8 13, label %39 ] -35: ; preds = %31 - tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %27, i8 noundef %2) - br label %34 +36: ; preds = %32 + tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %28, i8 noundef %2) + br label %35 -.sink.split6.i: ; preds = %38, %37, %34, %34, %34 - %.sink7.i = phi i8 [ 10, %38 ], [ 6, %37 ], [ 1, %34 ], [ 1, %34 ], [ 1, %34 ] +.sink.split6.i: ; preds = %39, %38, %35, %35, %35 + %.sink7.i = phi i8 [ 10, %39 ], [ 6, %38 ], [ 1, %35 ], [ 1, %35 ], [ 1, %35 ] tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef %.sink7.i, i8 noundef %2) - br label %36 + br label %37 -36: ; preds = %.sink.split6.i, %34 - store i8 %26, ptr %5, align 1, !alias.scope !2670, !noalias !2673 +37: ; preds = %.sink.split6.i, %35 + store i8 %27, ptr %5, align 1, !alias.scope !2670, !noalias !2673 br label %"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit" -37: ; preds = %34 +38: ; preds = %35 br label %.sink.split6.i -38: ; preds = %34 +39: ; preds = %35 br label %.sink.split6.i } diff --git a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll index 484cb236ea0..1bd4411fb9f 100644 --- a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll +++ b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll @@ -114303,8 +114303,8 @@ define { float, float } @_ZN4gpui5scene20TransformationMatrix5apply17hbe9a2a3129 store i64 %8, ptr %4, align 8 br label %.split -.loopexit: ; preds = %17 - store float %24, ptr %.sroa.0.0.ptr34, align 4 +.loopexit: ; preds = %18 + store float %25, ptr %.sroa.0.0.ptr34, align 4 %9 = icmp eq i64 %.sroa.0.0.add, 8 br i1 %9, label %10, label %.split @@ -114324,23 +114324,24 @@ define { float, float } @_ZN4gpui5scene20TransformationMatrix5apply17hbe9a2a3129 %.sroa.0.0.ptr34 = getelementptr inbounds nuw i8, ptr %4, i64 %.sroa.0.0.idx33 %.sroa.0.0.add = add nuw nsw i64 %.sroa.0.0.idx33, 4 %16 = add nuw nsw i64 %.sroa.7.032, 1 + %17 = getelementptr inbounds nuw [2 x [2 x float]], ptr %0, i64 0, i64 %.sroa.7.032 %.sroa.0.0.ptr.promoted = load float, ptr %.sroa.0.0.ptr34, align 4 - br label %17 + br label %18 -17: ; preds = %17, %.split - %18 = phi float [ %.sroa.0.0.ptr.promoted, %.split ], [ %24, %17 ] - %.sroa.715.029 = phi i64 [ 0, %.split ], [ %19, %17 ] - %.sroa.013.0.idx28 = phi i64 [ 0, %.split ], [ %.sroa.013.0.add, %17 ] - %19 = add nuw nsw i64 %.sroa.715.029, 1 +18: ; preds = %18, %.split + %19 = phi float [ %.sroa.0.0.ptr.promoted, %.split ], [ %25, %18 ] + %.sroa.715.029 = phi i64 [ 0, %.split ], [ %20, %18 ] + %.sroa.013.0.idx28 = phi i64 [ 0, %.split ], [ %.sroa.013.0.add, %18 ] + %20 = add nuw nsw i64 %.sroa.715.029, 1 %.sroa.013.0.add = add nuw nsw i64 %.sroa.013.0.idx28, 4 %.sroa.013.0.ptr30 = getelementptr inbounds nuw i8, ptr %5, i64 %.sroa.013.0.idx28 - %20 = getelementptr inbounds nuw [2 x [2 x float]], ptr %0, i64 0, i64 %.sroa.7.032, i64 %.sroa.715.029 - %21 = load float, ptr %20, align 4, !noundef !9 - %22 = load float, ptr %.sroa.013.0.ptr30, align 4, !noundef !9 - %23 = fmul float %21, %22 - %24 = fadd float %18, %23 - %25 = icmp eq i64 %.sroa.013.0.add, 8 - br i1 %25, label %.loopexit, label %17 + %21 = getelementptr inbounds nuw [2 x float], ptr %17, i64 0, i64 %.sroa.715.029 + %22 = load float, ptr %21, align 4, !noundef !9 + %23 = load float, ptr %.sroa.013.0.ptr30, align 4, !noundef !9 + %24 = fmul float %22, %23 + %25 = fadd float %19, %24 + %26 = icmp eq i64 %.sroa.013.0.add, 8 + br i1 %26, label %.loopexit, label %18 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable From 6ab07ec1ef80361bcc6d9f07e6016266989c6077 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 20:04:44 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/dauNpn2.ll | 20 +- bench/abc/optimized/extraBddMisc.ll | 26 +- bench/abc/optimized/ifMap.ll | 40 +-- bench/abc/optimized/mapperUtils.ll | 80 +++--- bench/abc/optimized/mpmLib.ll | 14 +- bench/actix-rs/optimized/4pmtvrahn6eloepe.ll | 22 +- bench/arrow/optimized/time.ll | 30 +-- bench/assimp/optimized/ASEParser.ll | 140 +++++----- bench/boost/optimized/formatters_cache.ll | 254 +++++++++--------- bench/box2d/optimized/linux_joystick.ll | 116 ++++---- .../optimized/btCollisionDispatcher.ll | 78 +++--- .../optimized/btDeformableBodySolver.ll | 80 +++--- bench/clamav/optimized/Ppmd7.ll | 12 +- bench/clap-rs/optimized/5651dp9k16h53y8x.ll | 160 +++++------ bench/cmake/optimized/nghttp2_hd_huffman.ll | 14 +- bench/darktable/optimized/blend.ll | 12 +- bench/darktable/optimized/colordata.ll | 30 +-- bench/darktable/optimized/exif_gps.ll | 22 +- bench/darktable/optimized/identify_tools.ll | 8 +- bench/darktable/optimized/libraw_c_api.ll | 4 +- bench/duckdb/optimized/aria.ll | 124 ++++----- bench/ffmpeg/optimized/pafvideo.ll | 10 +- bench/ffmpeg/optimized/vf_fftdnoiz.ll | 2 +- bench/flac/optimized/lpc.ll | 48 ++-- bench/freetype/optimized/truetype.ll | 242 ++++++++--------- bench/graphviz/optimized/mincross.ll | 28 +- bench/gromacs/optimized/boxdeformation.ll | 16 +- bench/gromacs/optimized/hxprops.ll | 36 +-- bench/gromacs/optimized/sm_simple.ll | 24 +- bench/grpc/optimized/executor.ll | 16 +- bench/hwloc/optimized/common-ps.ll | 34 +-- bench/image-rs/optimized/5oy2v8fghrh79s8.ll | 156 +++++------ bench/libjpeg-turbo/optimized/jquant1.ll | 174 ++++++------ bench/libwebp/optimized/filter_enc.ll | 22 +- bench/libwebp/optimized/vp8_dec.ll | 2 +- bench/lief/optimized/aria.ll | 34 +-- bench/linux/optimized/forcedeth.ll | 4 +- bench/linux/optimized/intel_guc_submission.ll | 4 +- .../optimized/PreISelIntrinsicLowering.ll | 22 +- bench/llvm/optimized/X86TargetMachine.ll | 8 +- bench/lua/optimized/lstring.ll | 16 +- bench/luau/optimized/AssemblyBuilderX64.ll | 128 ++++----- bench/lvgl/optimized/lv_ime_pinyin.ll | 154 +++++------ bench/lvgl/optimized/lv_matrix.ll | 190 ++++++------- bench/memcached/optimized/thread.ll | 96 +++---- bench/meshlab/optimized/cubemap.ll | 60 ++--- bench/meshlab/optimized/filter_layer.ll | 150 +++++------ bench/meshlab/optimized/mesh_model.ll | 128 ++++----- bench/meshoptimizer/optimized/spatialorder.ll | 166 ++++++------ bench/minetest/optimized/CGUIListBox.ll | 10 +- bench/mitsuba3/optimized/struct.ll | 156 +++++------ bench/oiio/optimized/imageio.ll | 32 +-- bench/oiio/optimized/psdinput.ll | 62 ++--- bench/open3d/optimized/ImageCPU.ll | 76 +++--- bench/opencc/optimized/bit-vector.ll | 4 +- bench/opencv/optimized/AKAZEFeatures.ll | 106 ++++---- bench/opencv/optimized/ap3p.ll | 8 +- bench/opencv/optimized/trackerKCF.ll | 22 +- bench/openjdk/optimized/AlphaMath.ll | 60 ++--- bench/openjdk/optimized/assembler_x86.ll | 32 +-- bench/openjdk/optimized/img_globals.ll | 12 +- bench/openspiel/optimized/CalcTables.ll | 82 +++--- bench/openspiel/optimized/PBN.ll | 24 +- bench/openssl/optimized/quic_ackm.ll | 46 ++-- bench/openssl/optimized/quic_cfq_test.ll | 142 +++++----- bench/openusd/optimized/av1_dx_iface.ll | 2 +- bench/openusd/optimized/blockd.ll | 2 +- bench/pbrt-v4/optimized/color.ll | 18 +- bench/pbrt-v4/optimized/vecmath.ll | 178 ++++++------ bench/php/optimized/in_body.ll | 126 ++++----- bench/pocketpy/optimized/linalg.ll | 12 +- bench/postgres/optimized/dt_common.ll | 86 +++--- bench/postgres/optimized/localtime.ll | 44 +-- bench/postgres/optimized/tidbitmap.ll | 6 +- bench/proj/optimized/defmodel.ll | 114 ++++---- bench/proj/optimized/healpix.ll | 78 +++--- bench/proj/optimized/test_defmodel.ll | 104 +++---- bench/qemu/optimized/ahci.ll | 40 +-- bench/qemu/optimized/job.ll | 102 +++---- .../perturbativebarrieroptionengine.ll | 16 +- bench/ruby/optimized/cp949.ll | 2 +- bench/ruby/optimized/euc_tw.ll | 12 +- bench/ruby/optimized/regcomp.ll | 76 +++--- bench/sdl/optimized/SDL_alsa_audio.ll | 64 ++--- bench/sdl/optimized/SDL_audioresample.ll | 28 +- bench/sdl/optimized/SDL_gamepad.ll | 100 +++---- bench/slurm/optimized/cpu_frequency.ll | 126 ++++----- bench/slurm/optimized/proc_args.ll | 166 ++++++------ bench/spike/optimized/plic.ll | 72 ++--- bench/stb/optimized/stb_ds.ll | 64 ++--- bench/stb/optimized/stb_image_resize2.ll | 86 +++--- bench/tev/optimized/UberShader.ll | 14 +- .../optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll | 54 ++-- bench/verilator/optimized/V3PreProc.ll | 250 ++++++++--------- bench/wireshark/optimized/packet-ipmi-se.ll | 86 +++--- bench/wireshark/optimized/packet-rrc.ll | 6 +- bench/wireshark/optimized/tvbuff_hpackhuff.ll | 14 +- bench/yaml-cpp/optimized/stream.ll | 138 +++++----- .../optimized/38cn6p2m6864jrrxog4mr8xwk.ll | 60 ++--- .../optimized/738kk4f8xx4axqteya4t2w4qw.ll | 28 +- 100 files changed, 3252 insertions(+), 3252 deletions(-) diff --git a/bench/abc/optimized/dauNpn2.ll b/bench/abc/optimized/dauNpn2.ll index 786e6bc4551..dd113f1e9fc 100644 --- a/bench/abc/optimized/dauNpn2.ll +++ b/bench/abc/optimized/dauNpn2.ll @@ -3339,7 +3339,7 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname %5 = getelementptr inbounds nuw i8, ptr %0, i64 288 br label %.preheader -.preheader: ; preds = %1, %53 +.preheader: ; preds = %1, %52 %indvars.iv50 = phi i64 [ 0, %1 ], [ %indvars.iv.next51, %53 ] %6 = load i32, ptr %3, align 8, !tbaa !81 %7 = icmp sgt i32 %6, 0 @@ -3412,33 +3412,33 @@ define void @Dtt_PrintMulti(ptr noundef readonly captures(none) %0) local_unname %44 = getelementptr inbounds nuw [13 x [15 x i32]], ptr %2, i64 0, i64 %indvars.iv50 br label %45 -45: ; preds = %36, %52 +45: ; preds = %36, %51 %indvars.iv46 = phi i64 [ 0, %36 ], [ %indvars.iv.next47, %52 ] %46 = getelementptr inbounds nuw [15 x i32], ptr %44, i64 0, i64 %indvars.iv46 %47 = load i32, ptr %46, align 4, !tbaa !40 %.not = icmp eq i32 %47, 0 br i1 %.not, label %50, label %48 -48: ; preds = %45 +48:; preds = %45 %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.27, i32 noundef %47) br label %52 -50: ; preds = %45 - %51 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, ptr noundef nonnull @.str.29) - br label %52 +49: ; preds = %45 + %50 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, ptr noundef nonnull @.str.29) + br label %51 -52: ; preds = %48, %50 +51: ; preds = %48, %49 %indvars.iv.next47 = add nuw nsw i64 %indvars.iv46, 1 %exitcond49.not = icmp eq i64 %indvars.iv.next47, 15 - br i1 %exitcond49.not, label %53, label %45, !llvm.loop !103 + br i1 %exitcond49.not, label %52, label %45, !llvm.loop !103 -53: ; preds = %52 +52: ; preds = %51 %putchar = tail call i32 @putchar(i32 10) %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1 %exitcond53.not = icmp eq i64 %indvars.iv.next51, 13 br i1 %exitcond53.not, label %._crit_edge.thread, label %.preheader, !llvm.loop !104 -._crit_edge.thread: ; preds = %.preheader, %._crit_edge, %53 +._crit_edge.thread: ; preds = %.preheader, %._crit_edge, %52 call void @llvm.lifetime.end.p0(i64 780, ptr nonnull %2) #30 ret void } diff --git a/bench/abc/optimized/extraBddMisc.ll b/bench/abc/optimized/extraBddMisc.ll index d999f438482..65223643384 100644 --- a/bench/abc/optimized/extraBddMisc.ll +++ b/bench/abc/optimized/extraBddMisc.ll @@ -3714,21 +3714,21 @@ define void @Extra_GraphExperiment() local_unnamed_addr #0 { %3 = load ptr, ptr %2, align 8, !tbaa !63 tail call void @Cudd_Ref(ptr noundef %3) #19 %4 = getelementptr inbounds nuw i8, ptr %1, i64 40 - br label %5 + br label %.lr.ph.preheader -5: ; preds = %0, %._crit_edge +.lr.ph.preheader: ; preds = %0, %._crit_edge %indvars.iv47 = phi i64 [ 0, %0 ], [ %indvars.iv.next48, %._crit_edge ] - %6 = phi ptr [ @__const.Extra_GraphExperiment.Edges, %0 ], [ %17, %._crit_edge ] + %.03643 = phi ptr [ @__const.Extra_GraphExperiment.Edges, %0 ], [ %17, %._crit_edge ] %.03643 = phi ptr [ %3, %0 ], [ %16, %._crit_edge ] %7 = load ptr, ptr %4, align 8, !tbaa !34 tail call void @Cudd_Ref(ptr noundef %7) #19 - %8 = load i32, ptr %6, align 4, !tbaa !31 + %7 = load i32, ptr %6, align 4, !tbaa !31 %.not3940 = icmp eq i32 %8, 0 br i1 %.not3940, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %5, %.lr.ph - %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %5 ] - %9 = phi i32 [ %15, %.lr.ph ], [ %8, %5 ] +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %8 = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %5 ] + %.03542 = phi i32 [ %1.lr.ph.preheader, %.lr.ph ], [ %8, %5 ] %.03542 = phi ptr [ %13, %.lr.ph ], [ %7, %5 ] %10 = load ptr, ptr %4, align 8, !tbaa !34 %11 = load ptr, ptr %2, align 8, !tbaa !63 @@ -3739,9 +3739,9 @@ define void @Extra_GraphExperiment() local_unnamed_addr #0 { tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %.03542) #19 tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %12) #19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %14 = getelementptr inbounds nuw [5 x i32], ptr %6, i64 0, i64 %indvars.iv.next - %15 = load i32, ptr %14, align 4, !tbaa !31 - %.not39 = icmp eq i32 %15, 0 + %13 = getelementptr inbounds nuw [5 x i32], ptr %6, i64 0, i64 %indvars.iv.next + %14 = load i32, ptr %13, align 4, !tbaa !31 + %.not39 = icmp eq i32 %14, 0 br i1 %.not39, label %._crit_edge, label %.lr.ph, !llvm.loop !82 ._crit_edge: ; preds = %.lr.ph, %5 @@ -3753,10 +3753,10 @@ define void @Extra_GraphExperiment() local_unnamed_addr #0 { %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 %17 = getelementptr inbounds nuw [5 x [5 x i32]], ptr @__const.Extra_GraphExperiment.Edges, i64 0, i64 %indvars.iv.next48 %exitcond = icmp eq i64 %indvars.iv.next48, 4 - br i1 %exitcond, label %18, label %5, !llvm.loop !83 + br i1 %exitcond, label %16, label %.lr.ph.preheader, !llvm.loop !83 -18: ; preds = %._crit_edge - %19 = tail call i32 @Cudd_zddPrintMinterm(ptr noundef nonnull %1, ptr noundef %16) #19 +16: ; preds = %._crit_edge + %17 = tail call i32 @Cudd_zddPrintMinterm(ptr noundef nonnull %1, ptr noundef %16) #19 tail call void @Cudd_RecursiveDerefZdd(ptr noundef nonnull %1, ptr noundef %16) #19 tail call void @Cudd_Quit(ptr noundef nonnull %1) #19 ret void diff --git a/bench/abc/optimized/ifMap.ll b/bench/abc/optimized/ifMap.ll index 031928b6f2a..3fe9b919af8 100644 --- a/bench/abc/optimized/ifMap.ll +++ b/bench/abc/optimized/ifMap.ll @@ -300,32 +300,32 @@ define float @If_CutDelaySpecial(ptr noundef readonly captures(none) %0, ptr nou %11 = sext i32 %2 to i64 %12 = getelementptr inbounds [2 x [3 x float]], ptr @If_CutDelaySpecial.Pin2Pin, i64 0, i64 %11 %wide.trip.count = and i64 %8, 255 - br label %13 + br label %12 -13: ; preds = %.lr.ph, %19 +12: ; preds = %.lr.ph, %18 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %19 ] %.01518 = phi float [ 0xC415AF1D80000000, %.lr.ph ], [ %.015., %19 ] - %14 = getelementptr inbounds nuw [0 x i32], ptr %4, i64 0, i64 %indvars.iv - %15 = load i32, ptr %14, align 4, !tbaa !34 - %16 = sext i32 %15 to i64 - %17 = getelementptr inbounds ptr, ptr %.val.val, i64 %16 - %18 = load ptr, ptr %17, align 8, !tbaa !12 - %.not = icmp eq ptr %18, null - br i1 %.not, label %.critedge, label %19 - -19: ; preds = %13 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 92 - %21 = load float, ptr %20, align 4, !tbaa !36 - %22 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv - %23 = load float, ptr %22, align 4, !tbaa !40 - %24 = fadd float %21, %23 - %25 = fcmp ogt float %.01518, %24 - %.015. = select i1 %25, float %.01518, float %24 + %13 = getelementptr inbounds nuw [0 x i32], ptr %4, i64 0, i64 %indvars.iv + %14 = load i32, ptr %13, align 4, !tbaa !34 + %15 = sext i32 %14 to i64 + %16 = getelementptr inbounds ptr, ptr %.val.val, i64 %15 + %17 = load ptr, ptr %16, align 8, !tbaa !12 + %.not = icmp eq ptr %17, null + br i1 %.not, label %.critedge, label %18 + +18: ; preds = %12 + %19 = getelementptr inbounds nuw i8, ptr %17, i64 92 + %20 = load float, ptr %19, align 4, !tbaa !36 + %21 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv + %22 = load float, ptr %21, align 4, !tbaa !40 + %23 = fadd float %20, %22 + %24 = fcmp ogt float %.01518, %23 + %.015. = select i1 %24, float %.01518, float %23 %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 %.critedge, label %13, !llvm.loop !41 + br i1 %exitcond.not, label %.critedge, label %12, !llvm.loop !41 -.critedge: ; preds = %13, %19, %3 +.critedge: ; preds = %12, %18, %3 %.015.lcssa = phi float [ 0xC415AF1D80000000, %3 ], [ %.015., %19 ], [ %.01518, %13 ] ret float %.015.lcssa } diff --git a/bench/abc/optimized/mapperUtils.ll b/bench/abc/optimized/mapperUtils.ll index 04875e37112..f71f8acc7c2 100644 --- a/bench/abc/optimized/mapperUtils.ll +++ b/bench/abc/optimized/mapperUtils.ll @@ -599,78 +599,78 @@ define void @Map_MappingSetupTruthTables(ptr noundef captures(none) %0) local_un define void @Map_MappingSetupTruthTablesLarge(ptr noundef captures(none) %0) local_unnamed_addr #6 { br label %.preheader33 -.preheader33: ; preds = %1, %3 +.preheader33: ; preds = %1, %4 %indvars.iv41 = phi i64 [ 0, %1 ], [ %indvars.iv.next42, %3 ] %invariant.gep = getelementptr inbounds nuw [32 x i32], ptr %0, i64 0, i64 %indvars.iv41 br label %2 2: ; preds = %.preheader33, %2 %indvars.iv = phi i64 [ 0, %.preheader33 ], [ %indvars.iv.next, %2 ] - %gep = getelementptr inbounds nuw [32 x i32], ptr %invariant.gep, i64 %indvars.iv - store i32 0, ptr %gep, align 4, !tbaa !39 + %3 = getelementptr inbounds nuw [32 x i32], ptr %invariant.gep, i64 %indvars.iv + store i32 0, ptr %3, align 4, !tbaa !39 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 - br i1 %exitcond.not, label %3, label %2, !llvm.loop !54 + br i1 %exitcond.not, label %4, label %2, !llvm.loop !54 -3: ; preds = %2 +4: ; preds = %2 %indvars.iv.next42 = add nuw nsw i64 %indvars.iv41, 1 %exitcond44.not = icmp eq i64 %indvars.iv.next42, 32 br i1 %exitcond44.not, label %.preheader31, label %.preheader33, !llvm.loop !55 -.preheader31: ; preds = %3, %17 +.preheader31: ; preds = %4, %18 %indvars.iv49 = phi i64 [ %indvars.iv.next50, %17 ], [ 0, %3 ] - %4 = trunc nuw nsw i64 %indvars.iv49 to i32 - %5 = shl nuw i32 1, %4 - br label %6 + %5 = trunc nuw nsw i64 %indvars.iv49 to i32 + %6 = shl nuw i32 1, %5 + br label %7 -6: ; preds = %.preheader31, %16 +7: ; preds = %.preheader31, %17 %indvars.iv45 = phi i64 [ 0, %.preheader31 ], [ %indvars.iv.next46, %16 ] - %7 = trunc nuw nsw i64 %indvars.iv45 to i32 - %8 = shl nuw nsw i32 1, %7 - %9 = and i32 %8, %4 - %.not = icmp eq i32 %9, 0 - br i1 %.not, label %16, label %10 - -10: ; preds = %6 - %11 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv45 - %12 = load i32, ptr %11, align 4, !tbaa !39 - %13 = or i32 %12, %5 - store i32 %13, ptr %11, align 4, !tbaa !39 - %14 = getelementptr inbounds nuw i8, ptr %11, i64 640 - %15 = getelementptr inbounds nuw [32 x i32], ptr %14, i64 0, i64 %indvars.iv49 - store i32 -1, ptr %15, align 4, !tbaa !39 - br label %16 - -16: ; preds = %6, %10 + %8 = trunc nuw nsw i64 %indvars.iv45 to i32 + %9 = shl nuw nsw i32 1, %8 + %10 = and i32 %9, %5 + %.not = icmp eq i32 %10, 0 + br i1 %.not, label %17, label %11 + +11: ; preds = %7 + %12 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv45 + %13 = load i32, ptr %12, align 4, !tbaa !39 + %14 = or i32 %13, %6 + store i32 %14, ptr %12, align 4, !tbaa !39 + %15 = getelementptr inbounds nuw i8, ptr %12, i64 640 + %16 = getelementptr inbounds nuw [32 x i32], ptr %15, i64 0, i64 %indvars.iv49 + store i32 -1, ptr %16, align 4, !tbaa !39 + br label %17 + +17: ; preds = %7, %11 %indvars.iv.next46 = add nuw nsw i64 %indvars.iv45, 1 %exitcond48.not = icmp eq i64 %indvars.iv.next46, 5 - br i1 %exitcond48.not, label %17, label %6, !llvm.loop !56 + br i1 %exitcond48.not, label %18, label %7, !llvm.loop !56 -17: ; preds = %16 +18: ; preds = %17 %indvars.iv.next50 = add nuw nsw i64 %indvars.iv49, 1 %exitcond52.not = icmp eq i64 %indvars.iv.next50, 32 br i1 %exitcond52.not, label %.preheader, label %.preheader31, !llvm.loop !57 -.preheader: ; preds = %17, %22 +.preheader: ; preds = %18, %23 %indvars.iv57 = phi i64 [ %indvars.iv.next58, %22 ], [ 0, %17 ] - br label %18 + br label %19 -18: ; preds = %.preheader, %18 +19: ; preds = %.preheader, %19 %indvars.iv53 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next54, %18 ] - %19 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv53 - %20 = load i32, ptr %19, align 4, !tbaa !39 - %21 = getelementptr inbounds nuw [32 x i32], ptr %19, i64 0, i64 %indvars.iv57 - store i32 %20, ptr %21, align 4, !tbaa !39 + %20 = getelementptr inbounds nuw [32 x i32], ptr %0, i64 %indvars.iv53 + %21 = load i32, ptr %20, align 4, !tbaa !39 + %22 = getelementptr inbounds nuw [32 x i32], ptr %19, i64 0, i64 %indvars.iv57 + store i32 %21, ptr %22, align 4, !tbaa !39 %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1 %exitcond56.not = icmp eq i64 %indvars.iv.next54, 5 - br i1 %exitcond56.not, label %22, label %18, !llvm.loop !58 + br i1 %exitcond56.not, label %23, label %19, !llvm.loop !58 -22: ; preds = %18 +23: ; preds = %19 %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 32 - br i1 %exitcond60.not, label %23, label %.preheader, !llvm.loop !59 + br i1 %exitcond60.not, label %24, label %.preheader, !llvm.loop !59 -23: ; preds = %22 +24: ; preds = %23 ret void } diff --git a/bench/abc/optimized/mpmLib.ll b/bench/abc/optimized/mpmLib.ll index 9d73295e3ec..66c36b6e8c3 100644 --- a/bench/abc/optimized/mpmLib.ll +++ b/bench/abc/optimized/mpmLib.ll @@ -18,27 +18,27 @@ define noalias noundef ptr @Mpm_LibLutSetSimple(i32 noundef %0) local_unnamed_ad %wide.trip.count21 = zext i32 %6 to i64 br label %7 -7: ; preds = %.lr.ph, %12 +7: ; preds = %.lr.ph, %11 %indvars.iv18 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next19, %12 ] %8 = getelementptr inbounds nuw [13 x i32], ptr %4, i64 0, i64 %indvars.iv18 store i32 20, ptr %8, align 4, !tbaa !10 %9 = getelementptr inbounds nuw [13 x [13 x i32]], ptr %5, i64 0, i64 %indvars.iv18 br label %10 -10: ; preds = %7, %10 +9: ; preds = %7, %9 %indvars.iv = phi i64 [ 0, %7 ], [ %indvars.iv.next, %10 ] - %11 = getelementptr inbounds nuw [13 x i32], ptr %9, i64 0, i64 %indvars.iv - store i32 1, ptr %11, align 4, !tbaa !10 + %10 = getelementptr inbounds nuw [13 x i32], ptr %9, i64 0, i64 %indvars.iv + store i32 1, ptr %10, align 4, !tbaa !10 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv18 - br i1 %exitcond.not, label %12, label %10, !llvm.loop !11 + br i1 %exitcond.not, label %11, label %9, !llvm.loop !11 -12: ; preds = %10 +11: ; preds = %9 %indvars.iv.next19 = add nuw nsw i64 %indvars.iv18, 1 %exitcond22.not = icmp eq i64 %indvars.iv.next19, %wide.trip.count21 br i1 %exitcond22.not, label %._crit_edge, label %7, !llvm.loop !13 -._crit_edge: ; preds = %12, %1 +._crit_edge: ; preds = %11, %1 ret ptr %2 } diff --git a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll index d8b349c2932..344f6fc6b07 100644 --- a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll +++ b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll @@ -9091,7 +9091,7 @@ define hidden void @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$A store i64 0, ptr %.sroa.5, align 8 br label %13 -.loopexit: ; preds = %35 +.loopexit: ; preds = %36 %12 = add nuw nsw i64 %.sroa.0.037, 1 %exitcond.not = icmp eq i64 %12, 16 br i1 %exitcond.not, label %14, label %13 @@ -9147,24 +9147,24 @@ define hidden void @"_ZN6brotli3enc19context_map_entropy30ContextMapEntropy$LT$A call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.5) ret void -30: ; preds = %13, %35 +30: ; preds = %13, %36 %31 = phi i1 [ true, %13 ], [ false, %35 ] %.sroa.04.036.sroa.phi = phi ptr [ %.sroa.0, %13 ], [ %.sroa.5, %35 ] %.sroa.04.036.sroa.phi39 = phi ptr [ %.sroa.042, %13 ], [ %.sroa.3, %35 ] %.sroa.04.036 = phi i64 [ 0, %13 ], [ 1, %35 ] - %gep = getelementptr inbounds nuw [2 x [16 x float]], ptr %invariant.gep, i64 0, i64 %.sroa.04.036 - %32 = load float, ptr %gep, align 4, !noundef !13 - %33 = load float, ptr %.sroa.04.036.sroa.phi39, align 4, !noundef !13 - %34 = fcmp olt float %32, %33 - br i1 %34, label %36, label %35 + %32 = getelementptr inbounds nuw [2 x [16 x float]], ptr %invariant.gep, i64 0, i64 %.sroa.04.036 + %33 = load float, ptr %32, align 4, !noundef !13 + %34 = load float, ptr %.sroa.04.036.sroa.phi39, align 4, !noundef !13 + %35 = fcmp olt float %33, %34 + br i1 %35, label %37, label %36 -35: ; preds = %30, %36 +36: ; preds = %30, %37 br i1 %31, label %30, label %.loopexit -36: ; preds = %30 +37: ; preds = %30 store i64 %.sroa.0.037, ptr %.sroa.04.036.sroa.phi, align 8 - store float %32, ptr %.sroa.04.036.sroa.phi39, align 4 - br label %35 + store float %33, ptr %.sroa.04.036.sroa.phi39, align 4 + br label %36 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/arrow/optimized/time.ll b/bench/arrow/optimized/time.ll index 90267c99601..892d6b4c7ec 100644 --- a/bench/arrow/optimized/time.ll +++ b/bench/arrow/optimized/time.ll @@ -40,29 +40,29 @@ define void @_ZN5arrow4util21ConvertTimestampValueERKSt10shared_ptrINS_8DataType %.sroa.22.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %14, i64 8 %.sroa.22.0.copyload.i = load i64, ptr %.sroa.22.0..sroa_idx.i, align 8 switch i32 %.sroa.0.0.copyload.i, label %21 [ - i32 0, label %15 - i32 1, label %18 + i32 0, label %14 + i32 1, label %17 ] -15: ; preds = %4 - %16 = mul nsw i64 %.sroa.22.0.copyload.i, %3 +14: ; preds = %4 + %15 = mul nsw i64 %.sroa.22.0.copyload.i, %3 store ptr null, ptr %0, align 8, !tbaa !35 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %16, ptr %17, align 8, !tbaa !38 - br label %22 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %15, ptr %16, align 8, !tbaa !38 + br label %21 -18: ; preds = %4 - %19 = sdiv i64 %3, %.sroa.22.0.copyload.i +17: ; preds = %4 + %18 = sdiv i64 %3, %.sroa.22.0.copyload.i store ptr null, ptr %0, align 8, !tbaa !35 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %19, ptr %20, align 8, !tbaa !38 - br label %22 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %18, ptr %19, align 8, !tbaa !38 + br label %21 -21: ; preds = %4 +20: ; preds = %4 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) - br label %22 + br label %21 -22: ; preds = %21, %18, %15 +21: ; preds = %20, %17, %14 ret void } diff --git a/bench/assimp/optimized/ASEParser.ll b/bench/assimp/optimized/ASEParser.ll index 33c8735808d..2d2f8e830bc 100644 --- a/bench/assimp/optimized/ASEParser.ll +++ b/bench/assimp/optimized/ASEParser.ll @@ -11200,14 +11200,14 @@ define hidden void @_ZN6Assimp3ASE6Parser26ParseLV3MeshTFaceListBlockEjRNS0_4Mes br label %.outer .outer: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit, %4 - %17 = phi ptr [ %116, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.pre, %4 ] + %17 = phi ptr [ %115, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.pre, %4 ] %.0.ph = phi i32 [ %.11821, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ 0, %4 ] %18 = load i8, ptr %17, align 1 %19 = icmp eq i8 %18, 42 br i1 %19, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread .lr.ph: ; preds = %.outer, %80 - %20 = phi ptr [ %81, %80 ], [ %17, %.outer ] + %20 = phi ptr [ %80, %80 ], [ %17, %.outer ] %21 = getelementptr inbounds nuw i8, ptr %20, i64 1 store ptr %21, ptr %0, align 8 %22 = call i32 @strncmp(ptr noundef nonnull dereferenceable(11) @.str.181, ptr noundef nonnull dereferenceable(1) %21, i64 noundef 10) #32 @@ -11364,111 +11364,111 @@ _ZN6Assimp3ASE6Parser22ParseLV4MeshLongTripleEPjRj.exit: ; preds = %_ZN6Assimp3A 80: ; preds = %68, %64 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #29 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #29 - %81 = load ptr, ptr %0, align 8 - %82 = load i8, ptr %81, align 1 - %83 = icmp eq i8 %82, 42 - br i1 %83, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit + %80 = load ptr, ptr %0, align 8 + %81 = load i8, ptr %80, align 1 + %82 = icmp eq i8 %81, 42 + br i1 %82, label %.lr.ph, label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit: ; preds = %23, %.lr.ph, %80 - %84 = phi ptr [ %21, %23 ], [ %21, %.lr.ph ], [ %81, %80 ] - %.pre32 = load i8, ptr %84, align 1 + %83 = phi ptr [ %21, %23 ], [ %21, %.lr.ph ], [ %80, %80 ] + %.pre32 = load i8, ptr %83, align 1 br label %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread _ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit, %.outer - %85 = phi i8 [ %.pre32, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %18, %.outer ] - %86 = phi ptr [ %84, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %17, %.outer ] - switch i8 %85, label %_ZN6Assimp9IsLineEndIcEEbT_.exit [ - i8 123, label %87 - i8 125, label %89 - i8 0, label %109 - i8 13, label %110 - i8 10, label %110 - i8 12, label %110 + %84 = phi i8 [ %.pre32, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %18, %.outer ] + %85 = phi ptr [ %83, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread.loopexit ], [ %17, %.outer ] + switch i8 %84, label %_ZN6Assimp9IsLineEndIcEEbT_.exit [ + i8 123, label %86 + i8 125, label %88 + i8 0, label %108 + i8 13, label %109 + i8 10, label %109 + i8 12, label %109 ] -87: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread - %88 = add nsw i32 %.0.ph, 1 +86: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread + %87 = add nsw i32 %.0.ph, 1 br label %_ZN6Assimp9IsLineEndIcEEbT_.exit -89: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread - %90 = add nsw i32 %.0.ph, -1 - %91 = icmp eq i32 %90, 0 - br i1 %91, label %92, label %_ZN6Assimp9IsLineEndIcEEbT_.exit +88: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread + %89 = add nsw i32 %.0.ph, -1 + %90 = icmp eq i32 %89, 0 + br i1 %90, label %91, label %_ZN6Assimp9IsLineEndIcEEbT_.exit -92: ; preds = %89 - %93 = getelementptr inbounds nuw i8, ptr %86, i64 1 - store ptr %93, ptr %0, align 8 - %94 = load ptr, ptr %9, align 8 - %95 = icmp eq ptr %93, %94 - br i1 %95, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %.lr.ph.i +91: ; preds = %88 + %92 = getelementptr inbounds nuw i8, ptr %85, i64 1 + store ptr %92, ptr %0, align 8 + %93 = load ptr, ptr %9, align 8 + %94 = icmp eq ptr %92, %93 + br i1 %94, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %92 +.lr.ph.i: ; preds = %91 %.promoted24.i = load i8, ptr %16, align 4 %.promoted25.i = load i32, ptr %10, align 8 - br label %96 - -96: ; preds = %106, %.lr.ph.i - %97 = phi i32 [ %.promoted25.i, %.lr.ph.i ], [ %105, %106 ] - %98 = phi i8 [ %.promoted24.i, %.lr.ph.i ], [ %storemerge.i15, %106 ] - %99 = phi ptr [ %93, %.lr.ph.i ], [ %107, %106 ] - %100 = load i8, ptr %99, align 1 - switch i8 %100, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i [ - i8 13, label %101 - i8 10, label %101 - i8 0, label %101 - i8 12, label %101 + br label %95 + +95: ; preds = %105, %.lr.ph.i + %96 = phi i32 [ %.promoted25.i, %.lr.ph.i ], [ %104, %106 ] + %97 = phi i8 [ %.promoted24.i, %.lr.ph.i ], [ %storemerge.i15, %106 ] + %98 = phi ptr [ %92, %.lr.ph.i ], [ %106, %106 ] + %99 = load i8, ptr %98, align 1 + switch i8 %99, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i [ + i8 13, label %100 + i8 10, label %100 + i8 0, label %100 + i8 12, label %100 ] -101: ; preds = %96, %96, %96, %96 - %102 = trunc nuw i8 %98 to i1 - br i1 %102, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, label %103 +100: ; preds = %95, %95, %95, %95 + %101 = trunc nuw i8 %97 to i1 + br i1 %101, label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, label %102 -103: ; preds = %101 - %104 = add i32 %97, 1 - store i32 %104, ptr %10, align 8 +102: ; preds = %100 + %103 = add i32 %96, 1 + store i32 %103, ptr %10, align 8 br label %_ZN6Assimp9IsLineEndIcEEbT_.exit.i -_ZN6Assimp9IsLineEndIcEEbT_.exit.i: ; preds = %103, %101, %96 +_ZN6Assimp9IsLineEndIcEEbT_.exit.i: ; preds = %102, %100, %95 %storemerge.i15 = phi i8 [ 1, %103 ], [ 0, %96 ], [ 0, %101 ] - %105 = phi i32 [ %104, %103 ], [ %97, %96 ], [ %97, %101 ] + %104 = phi i32 [ %103, %103 ], [ %96, %96 ], [ %96, %101 ] store i8 %storemerge.i15, ptr %16, align 4 - switch i8 %100, label %106 [ + switch i8 %99, label %106 [ i8 125, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 123, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 42, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit i8 0, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit ] -106: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i - %107 = getelementptr inbounds nuw i8, ptr %99, i64 1 - store ptr %107, ptr %0, align 8 - %108 = icmp eq ptr %107, %94 - br i1 %108, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %96 +105: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i + %106 = getelementptr inbounds nuw i8, ptr %98, i64 1 + store ptr %106, ptr %0, align 8 + %107 = icmp eq ptr %106, %93 + br i1 %107, label %_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit, label %95 -_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %106, %92 +_ZN6Assimp3ASE6Parser15SkipToNextTokenEv.exit: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %_ZN6Assimp9IsLineEndIcEEbT_.exit.i, %105, %91 ret void -109: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread +108: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread call void @_ZN6Assimp3ASE6Parser8LogErrorEPKc(ptr noundef nonnull align 8 dereferenceable(188) %0, ptr noundef nonnull @.str.183) #31 unreachable -110: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread - %111 = load i8, ptr %16, align 4, !range !32, !noundef !33 - %112 = trunc nuw i8 %111 to i1 - br i1 %112, label %_ZN6Assimp9IsLineEndIcEEbT_.exit, label %113 +109: ; preds = %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread + %110 = load i8, ptr %16, align 4, !range !32, !noundef !33 + %111 = trunc nuw i8 %110 to i1 + br i1 %111, label %_ZN6Assimp9IsLineEndIcEEbT_.exit, label %112 -113: ; preds = %110 - %114 = load i32, ptr %10, align 8 - %115 = add i32 %114, 1 - store i32 %115, ptr %10, align 8 +112: ; preds = %109 + %113 = load i32, ptr %10, align 8 + %114 = add i32 %113, 1 + store i32 %114, ptr %10, align 8 br label %_ZN6Assimp9IsLineEndIcEEbT_.exit -_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %110, %89, %87, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %113 +_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %109, %88, %86, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread, %112 %storemerge = phi i8 [ 1, %113 ], [ 0, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ 0, %87 ], [ 0, %89 ], [ 0, %110 ] - %.11821 = phi i32 [ %.0.ph, %113 ], [ %.0.ph, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ %88, %87 ], [ %90, %89 ], [ %.0.ph, %110 ] + %.11821 = phi i32 [ %.0.ph, %113 ], [ %.0.ph, %_ZN6Assimp10TokenMatchIKcEEbRPT_PS1_j.exit.thread ], [ %87, %87 ], [ %89, %89 ], [ %.0.ph, %110 ] store i8 %storemerge, ptr %16, align 4 - %116 = getelementptr inbounds nuw i8, ptr %86, i64 1 - store ptr %116, ptr %0, align 8 + %115 = getelementptr inbounds nuw i8, ptr %85, i64 1 + store ptr %115, ptr %0, align 8 br label %.outer, !llvm.loop !99 } diff --git a/bench/boost/optimized/formatters_cache.ll b/bench/boost/optimized/formatters_cache.ll index 5d63168a551..6bc3f16577b 100644 --- a/bench/boost/optimized/formatters_cache.ll +++ b/bench/boost/optimized/formatters_cache.ll @@ -137,7 +137,7 @@ define hidden void @_ZN5boost6locale8impl_icu16formatters_cacheC2ERKN6icu_706Loc 24: ; preds = %15 %25 = landingpad { ptr, i32 } cleanup - br label %170 + br label %169 .preheader146: ; preds = %15, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit ], [ 0, %15 ] @@ -311,238 +311,238 @@ _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatER cleanup br label %.body -.preheader143: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118, %110 +.preheader143: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118, %109 %indvars.iv167 = phi i64 [ %indvars.iv.next168, %110 ], [ 0, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit118 ] %100 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv167 %101 = load i32, ptr %100, align 4, !tbaa !16 %102 = getelementptr inbounds nuw [4 x [4 x %"class.icu_70::UnicodeString"]], ptr %.ptr69, i64 0, i64 %indvars.iv167 br label %111 -103: ; preds = %110 +102: ; preds = %109 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #18 - %104 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %105 = load i16, ptr %104, align 8, !tbaa !13, !noalias !21 - %106 = icmp ugt i16 %105, 31 - br i1 %106, label %108, label %107 + %103 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %104 = load i16, ptr %103, align 8, !tbaa !13, !noalias !21 + %105 = icmp ugt i16 %104, 31 + br i1 %105, label %107, label %106 -107: ; preds = %103 +106: ; preds = %102 invoke void @_ZN6icu_7013UnicodeStringC1EPKc(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull @.str) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %164 + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %163 -108: ; preds = %103 - %109 = getelementptr inbounds nuw i8, ptr %0, i64 136 - invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull align 8 dereferenceable(64) %109) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %164 +107: ; preds = %102 + %108 = getelementptr inbounds nuw i8, ptr %0, i64 136 + invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull align 8 dereferenceable(64) %108) + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" unwind label %163 -110: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 +109: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 %indvars.iv.next168 = add nuw nsw i64 %indvars.iv167, 1 %exitcond170.not = icmp eq i64 %indvars.iv.next168, 4 - br i1 %exitcond170.not, label %103, label %.preheader143, !llvm.loop !24 + br i1 %exitcond170.not, label %102, label %.preheader143, !llvm.loop !24 -111: ; preds = %.preheader143, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 +110: ; preds = %.preheader143, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 %indvars.iv163 = phi i64 [ 0, %.preheader143 ], [ %indvars.iv.next164, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 ] - %112 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv163 - %113 = load i32, ptr %112, align 4, !tbaa !16 - %114 = invoke noundef ptr @_ZN6icu_7010DateFormat22createDateTimeInstanceENS0_6EStyleES1_RKNS_6LocaleE(i32 noundef %101, i32 noundef %113, ptr noundef nonnull align 8 dereferenceable(217) %1) - to label %115 unwind label %147 - -115: ; preds = %111 - %116 = getelementptr inbounds nuw [4 x %"class.icu_70::UnicodeString"], ptr %102, i64 0, i64 %indvars.iv163 - %117 = icmp eq ptr %114, null - br i1 %117, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129, label %122 - -_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129: ; preds = %115 - %118 = getelementptr inbounds nuw i8, ptr %116, i64 8 - %119 = load i16, ptr %118, align 8, !tbaa !13 - %120 = and i16 %119, 1 - %.not.i.i10.i130 = icmp eq i16 %120, 0 - %121 = and i16 %119, 30 - %storemerge.i.i11.i131 = select i1 %.not.i.i10.i130, i16 %121, i16 2 - store i16 %storemerge.i.i11.i131, ptr %118, align 8, !tbaa !13 + %111 = getelementptr inbounds nuw [4 x i32], ptr @__const.formatters_cache.styles, i64 0, i64 %indvars.iv163 + %112 = load i32, ptr %111, align 4, !tbaa !16 + %113 = invoke noundef ptr @_ZN6icu_7010DateFormat22createDateTimeInstanceENS0_6EStyleES1_RKNS_6LocaleE(i32 noundef %101, i32 noundef %112, ptr noundef nonnull align 8 dereferenceable(217) %1) + to label %115 unwind label %146 + +114: ; preds = %110 + %115 = getelementptr inbounds nuw [4 x %"class.icu_70::UnicodeString"], ptr %102, i64 0, i64 %indvars.iv163 + %116 = icmp eq ptr %113, null + br i1 %116, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129, label %121 + +_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129: ; preds = %114 + %117 = getelementptr inbounds nuw i8, ptr %115, i64 8 + %118 = load i16, ptr %117, align 8, !tbaa !13 + %119 = and i16 %118, 1 + %.not.i.i10.i130 = icmp eq i16 %119, 0 + %120 = and i16 %118, 30 + %storemerge.i.i11.i131 = select i1 %.not.i.i10.i130, i16 %120, i16 2 + store i16 %storemerge.i.i11.i131, ptr %117, align 8, !tbaa !13 br label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 -122: ; preds = %115 - %123 = tail call ptr @__dynamic_cast(ptr nonnull %114, ptr nonnull @_ZTIN6icu_7010DateFormatE, ptr nonnull @_ZTIN6icu_7016SimpleDateFormatE, i64 0) #18 - %124 = icmp eq ptr %123, null - br i1 %124, label %125, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120 +121: ; preds = %114 + %122 = tail call ptr @__dynamic_cast(ptr nonnull %113, ptr nonnull @_ZTIN6icu_7010DateFormatE, ptr nonnull @_ZTIN6icu_7016SimpleDateFormatE, i64 0) #18 + %123 = icmp eq ptr %122, null + br i1 %123, label %124, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120 -125: ; preds = %122 - %126 = load ptr, ptr %114, align 8, !tbaa !8 - %127 = getelementptr inbounds nuw i8, ptr %126, i64 16 - %128 = load ptr, ptr %127, align 8 - %129 = invoke noundef ptr %128(ptr noundef nonnull align 8 dereferenceable(8) %114) +124: ; preds = %121 + %125 = load ptr, ptr %113, align 8, !tbaa !8 + %126 = getelementptr inbounds nuw i8, ptr %125, i64 16 + %127 = load ptr, ptr %126, align 8 + %128 = invoke noundef ptr %128(ptr noundef nonnull align 8 dereferenceable(8) %113) to label %.noexc.i124 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 -.noexc.i124: ; preds = %125 - %130 = invoke noundef ptr @_ZN6icu_7016SimpleDateFormat16getStaticClassIDEv() +.noexc.i124: ; preds = %124 + %129 = invoke noundef ptr @_ZN6icu_7016SimpleDateFormat16getStaticClassIDEv() to label %.noexc3.i125 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 .noexc3.i125: ; preds = %.noexc.i124 - %131 = icmp eq ptr %129, %130 - br i1 %131, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126 - -_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120: ; preds = %.noexc3.i125, %122 - %.0.i.i.i121 = phi ptr [ %123, %122 ], [ %114, %.noexc3.i125 ] - %132 = load ptr, ptr %.0.i.i.i121, align 8, !tbaa !8 - %133 = getelementptr inbounds nuw i8, ptr %132, i64 240 - %134 = load ptr, ptr %133, align 8 - %135 = invoke noundef nonnull align 8 dereferenceable(64) ptr %134(ptr noundef nonnull align 8 dereferenceable(864) %.0.i.i.i121, ptr noundef nonnull align 8 dereferenceable(64) %116) + %130 = icmp eq ptr %128, %129 + br i1 %130, label %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126 + +_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120: ; preds = %.noexc3.i125, %121 + %.0.i.i.i121 = phi ptr [ %122, %122 ], [ %113, %.noexc3.i125 ] + %131 = load ptr, ptr %.0.i.i.i121, align 8, !tbaa !8 + %132 = getelementptr inbounds nuw i8, ptr %131, i64 240 + %133 = load ptr, ptr %132, align 8 + %134 = invoke noundef nonnull align 8 dereferenceable(64) ptr %134(ptr noundef nonnull align 8 dereferenceable(864) %.0.i.i.i121, ptr noundef nonnull align 8 dereferenceable(64) %115) to label %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123 unwind label %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126: ; preds = %.noexc3.i125 - %136 = getelementptr inbounds nuw i8, ptr %116, i64 8 - %137 = load i16, ptr %136, align 8, !tbaa !13 - %138 = and i16 %137, 1 - %.not.i.i.i127 = icmp eq i16 %138, 0 - %139 = and i16 %137, 30 - %storemerge.i.i.i128 = select i1 %.not.i.i.i127, i16 %139, i16 2 - store i16 %storemerge.i.i.i128, ptr %136, align 8, !tbaa !13 + %135 = getelementptr inbounds nuw i8, ptr %115, i64 8 + %136 = load i16, ptr %135, align 8, !tbaa !13 + %137 = and i16 %136, 1 + %.not.i.i.i127 = icmp eq i16 %137, 0 + %138 = and i16 %136, 30 + %storemerge.i.i.i128 = select i1 %.not.i.i.i127, i16 %138, i16 2 + store i16 %storemerge.i.i.i128, ptr %135, align 8, !tbaa !13 br label %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123 _ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123: ; preds = %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.i126, %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120 - %140 = load ptr, ptr %114, align 8, !tbaa !8 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 8 - %142 = load ptr, ptr %141, align 8 - tail call void %142(ptr noundef nonnull align 8 dereferenceable(352) %114) #18 + %139 = load ptr, ptr %113, align 8, !tbaa !8 + %140 = getelementptr inbounds nuw i8, ptr %139, i64 8 + %141 = load ptr, ptr %140, align 8 + tail call void %142(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 br label %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134 -_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122: ; preds = %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, %.noexc.i124, %125 - %143 = landingpad { ptr, i32 } +_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122: ; preds = %_ZN5boost6locale8impl_icu8icu_castIN6icu_7016SimpleDateFormatENS3_10DateFormatEEEPT_PT0_.exit.i.i120, %.noexc.i124, %124 + %142 = landingpad { ptr, i32 } cleanup - %144 = load ptr, ptr %114, align 8, !tbaa !8 - %145 = getelementptr inbounds nuw i8, ptr %144, i64 8 - %146 = load ptr, ptr %145, align 8 - tail call void %146(ptr noundef nonnull align 8 dereferenceable(352) %114) #18 + %143 = load ptr, ptr %113, align 8, !tbaa !8 + %144 = getelementptr inbounds nuw i8, ptr %143, i64 8 + %145 = load ptr, ptr %144, align 8 + tail call void %146(ptr noundef nonnull align 8 dereferenceable(352) %113) #18 br label %.body _ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternEPN6icu_7010DateFormatERNS3_13UnicodeStringE.exit134: ; preds = %_ZNKSt14default_deleteIN6icu_7010DateFormatEEclEPS1_.exit.i.i123, %_ZN5boost6locale8impl_icu12_GLOBAL__N_115get_icu_patternESt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS5_EERNS4_13UnicodeStringE.exit.thread9.i129 %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1 %exitcond166.not = icmp eq i64 %indvars.iv.next164, 4 - br i1 %exitcond166.not, label %110, label %111, !llvm.loop !25 + br i1 %exitcond166.not, label %109, label %110, !llvm.loop !25 -147: ; preds = %111 - %148 = landingpad { ptr, i32 } +146: ; preds = %110 + %147 = landingpad { ptr, i32 } cleanup br label %.body -"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit": ; preds = %107, %108 - %149 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %16, ptr noundef nonnull align 8 dereferenceable(64) %3) #18 +"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit": ; preds = %106, %107 + %148 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %16, ptr noundef nonnull align 8 dereferenceable(64) %3) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %3) #18 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #18 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #18 - %150 = getelementptr inbounds nuw i8, ptr %0, i64 400 - %151 = load i16, ptr %150, align 8, !tbaa !13, !noalias !26 - %152 = icmp ugt i16 %151, 31 - br i1 %152, label %154, label %153 + %149 = getelementptr inbounds nuw i8, ptr %0, i64 400 + %150 = load i16, ptr %149, align 8, !tbaa !13, !noalias !26 + %151 = icmp ugt i16 %150, 31 + br i1 %151, label %153, label %152 -153: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" +152: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" invoke void @_ZN6icu_7013UnicodeStringC1EPKc(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull @.str.2) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %166 + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %165 -154: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" - %155 = getelementptr inbounds nuw i8, ptr %0, i64 392 - invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 8 dereferenceable(64) %155) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %166 +153: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit" + %154 = getelementptr inbounds nuw i8, ptr %0, i64 392 + invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 8 dereferenceable(64) %154) + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" unwind label %165 -"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137": ; preds = %153, %154 - %156 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull align 8 dereferenceable(64) %4) #18 +"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137": ; preds = %152, %153 + %155 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull align 8 dereferenceable(64) %4) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %4) #18 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #18 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #18 - %157 = getelementptr inbounds nuw i8, ptr %0, i64 1552 - %158 = load i16, ptr %157, align 8, !tbaa !13, !noalias !29 - %159 = icmp ugt i16 %158, 31 - br i1 %159, label %161, label %160 + %156 = getelementptr inbounds nuw i8, ptr %0, i64 1552 + %157 = load i16, ptr %156, align 8, !tbaa !13, !noalias !29 + %158 = icmp ugt i16 %157, 31 + br i1 %158, label %160, label %159 -160: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" +159: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" invoke void @_ZN6icu_7013UnicodeStringC1EPKc(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull @.str.3) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %168 + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %167 -161: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" - %162 = getelementptr inbounds nuw i8, ptr %0, i64 1544 - invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull align 8 dereferenceable(64) %162) - to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %168 +160: ; preds = %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit137" + %161 = getelementptr inbounds nuw i8, ptr %0, i64 1544 + invoke void @_ZN6icu_7013UnicodeStringC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull align 8 dereferenceable(64) %161) + to label %"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140" unwind label %167 -"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140": ; preds = %160, %161 - %163 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %20, ptr noundef nonnull align 8 dereferenceable(64) %5) #18 +"_ZZN5boost6locale8impl_icu16formatters_cacheC1ERKN6icu_706LocaleEENK3$_0clERKNS3_13UnicodeStringEPKc.exit140": ; preds = %159, %160 + %162 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6icu_7013UnicodeStringaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %20, ptr noundef nonnull align 8 dereferenceable(64) %5) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #18 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #18 ret void -164: ; preds = %108, %107 - %165 = landingpad { ptr, i32 } +163: ; preds = %107, %106 + %164 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #18 br label %.body -166: ; preds = %154, %153 - %167 = landingpad { ptr, i32 } +165: ; preds = %153, %152 + %166 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #18 br label %.body -168: ; preds = %161, %160 - %169 = landingpad { ptr, i32 } +167: ; preds = %160, %159 + %168 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #18 br label %.body -.body: ; preds = %164, %166, %168, %147, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122, %98, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106, %61, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i - %.pn75 = phi { ptr, i32 } [ %62, %61 ], [ %57, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i ], [ %99, %98 ], [ %94, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106 ], [ %148, %147 ], [ %143, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 ], [ %169, %168 ], [ %167, %166 ], [ %165, %164 ] +.body: ; preds = %163, %165, %167, %146, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122, %98, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106, %61, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i + %.pn75 = phi { ptr, i32 } [ %62, %61 ], [ %57, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i ], [ %99, %98 ], [ %94, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i106 ], [ %147, %147 ], [ %142, %_ZNSt10unique_ptrIN6icu_7010DateFormatESt14default_deleteIS1_EED2Ev.exit7.i122 ], [ %168, %168 ], [ %167, %166 ], [ %165, %164 ] call void @_ZN6icu_706LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %23) #18 - br label %170 + br label %169 -170: ; preds = %.body, %24 +169: ; preds = %.body, %24 %.pn75.pn = phi { ptr, i32 } [ %.pn75, %.body ], [ %25, %24 ] call void @_ZN5boost19thread_specific_ptrIN6icu_7016SimpleDateFormatEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #18 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %16) #18 - br label %171 + br label %170 -171: ; preds = %171, %170 +170: ; preds = %170, %169 %.idx81 = phi i64 [ 1608, %170 ], [ %.add82, %171 ] %.add82 = add nsw i64 %.idx81, -64 %.ptr84 = getelementptr inbounds i8, ptr %0, i64 %.add82 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr84) #18 - %172 = icmp eq i64 %.add82, 584 - br i1 %172, label %.preheader142, label %171 + %171 = icmp eq i64 %.add82, 584 + br i1 %171, label %.preheader142, label %170 -.preheader142: ; preds = %171, %.preheader142 +.preheader142: ; preds = %170, %.preheader142 %.idx87 = phi i64 [ %.add88, %.preheader142 ], [ 584, %171 ] %.add88 = add nsw i64 %.idx87, -64 %.ptr90 = getelementptr inbounds i8, ptr %0, i64 %.add88 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr90) #18 - %173 = icmp eq i64 %.add88, 328 - br i1 %173, label %.preheader141, label %.preheader142 + %172 = icmp eq i64 %.add88, 328 + br i1 %172, label %.preheader141, label %.preheader142 .preheader141: ; preds = %.preheader142, %.preheader141 %.idx93 = phi i64 [ %.add94, %.preheader141 ], [ 328, %.preheader142 ] %.add94 = add nsw i64 %.idx93, -64 %.ptr96 = getelementptr inbounds i8, ptr %0, i64 %.add94 call void @_ZN6icu_7013UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %.ptr96) #18 - %174 = icmp eq i64 %.add94, 72 - br i1 %174, label %.preheader, label %.preheader141 + %173 = icmp eq i64 %.add94, 72 + br i1 %173, label %.preheader, label %.preheader141 .preheader: ; preds = %.preheader141, %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit %.idx99 = phi i64 [ %.add100, %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit ], [ 72, %.preheader141 ] %.add100 = add nsw i64 %.idx99, -8 %.ptr102 = getelementptr inbounds i8, ptr %0, i64 %.add100 invoke void @_ZN5boost6detail12set_tss_dataEPKvPFvPFvPvES3_ES5_S3_b(ptr noundef nonnull align 8 dereferenceable(8) %.ptr102, ptr noundef null, ptr noundef null, ptr noundef null, i1 noundef zeroext true) - to label %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit unwind label %175 + to label %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit unwind label %174 -175: ; preds = %.preheader - %176 = landingpad { ptr, i32 } +174: ; preds = %.preheader + %175 = landingpad { ptr, i32 } catch ptr null - %177 = extractvalue { ptr, i32 } %176, 0 - call void @__clang_call_terminate(ptr %177) #19 + %176 = extractvalue { ptr, i32 } %175, 0 + call void @__clang_call_terminate(ptr %176) #19 unreachable _ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit: ; preds = %.preheader - %178 = icmp eq i64 %.add100, 16 - br i1 %178, label %179, label %.preheader + %177 = icmp eq i64 %.add100, 16 + br i1 %177, label %178, label %.preheader -179: ; preds = %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit +178: ; preds = %_ZN5boost19thread_specific_ptrIN6icu_7012NumberFormatEED2Ev.exit call void @_ZNSt6locale5facetD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %0) #18 resume { ptr, i32 } %.pn75.pn } diff --git a/bench/box2d/optimized/linux_joystick.ll b/bench/box2d/optimized/linux_joystick.ll index 69861813fc6..9ecb0d4f314 100644 --- a/bench/box2d/optimized/linux_joystick.ll +++ b/bench/box2d/optimized/linux_joystick.ll @@ -677,14 +677,14 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ ._crit_edge: ; preds = %handleAbsEvent.exit, %2 %16 = load i32, ptr %4, align 4, !tbaa !93 %17 = icmp eq i32 %16, 19 - br i1 %17, label %18, label %89 + br i1 %17, label %18, label %88 18: ; preds = %._crit_edge tail call void @_glfwInputJoystick(ptr noundef nonnull %0, i32 noundef 262146) #13 %19 = load i32, ptr %5, align 8, !tbaa !94 %20 = tail call i32 @close(i32 noundef %19) #13 tail call void @_glfwFreeJoystick(ptr noundef nonnull %0) #13 - br label %89 + br label %88 21: ; preds = %.lr.ph, %handleAbsEvent.exit %22 = load i16, ptr %9, align 8, !tbaa !107 @@ -739,7 +739,7 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ %43 = load i32, ptr %42, align 4, !tbaa !93 %44 = and i32 %39, 65528 %or.cond.i = icmp eq i32 %44, 16 - br i1 %or.cond.i, label %45, label %70 + br i1 %or.cond.i, label %45, label %69 45: ; preds = %37 %46 = add nsw i32 %39, -16 @@ -774,7 +774,7 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ %62 = load i32, ptr %50, align 4, !tbaa !93 %63 = sext i32 %62 to i64 %64 = getelementptr inbounds [3 x [3 x i8]], ptr @handleAbsEvent.stateMap, i64 0, i64 %63 - %65 = getelementptr inbounds nuw i8, ptr %50, i64 4 + %65 = getelementptr inbounds nuw i8, ptr %49, i64 4 %66 = load i32, ptr %65, align 4, !tbaa !93 %67 = sext i32 %66 to i64 %68 = getelementptr inbounds [3 x i8], ptr %64, i64 0, i64 %67 @@ -782,45 +782,45 @@ define hidden i32 @_glfwPollJoystickLinux(ptr noundef %0, i32 noundef %1) local_ tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %43, i8 noundef signext %69) #13 br label %handleAbsEvent.exit -70: ; preds = %37 - %71 = getelementptr inbounds nuw [64 x %struct.input_absinfo], ptr %13, i64 0, i64 %41 - %72 = sitofp i32 %40 to float - %73 = getelementptr inbounds nuw i8, ptr %71, i64 8 - %74 = load i32, ptr %73, align 4, !tbaa !113 - %75 = getelementptr inbounds nuw i8, ptr %71, i64 4 - %76 = load i32, ptr %75, align 4, !tbaa !115 - %.not.i8 = icmp eq i32 %74, %76 - br i1 %.not.i8, label %85, label %77 - -77: ; preds = %70 - %78 = sub nsw i32 %74, %76 - %79 = sitofp i32 %76 to float - %80 = fsub float %72, %79 - %81 = sitofp i32 %78 to float - %82 = fdiv float %80, %81 - %83 = fmul float %82, 2.000000e+00 - %84 = fadd float %83, -1.000000e+00 - br label %85 - -85: ; preds = %77, %70 - %.0.i = phi float [ %84, %77 ], [ %72, %70 ] +69: ; preds = %37 + %70 = getelementptr inbounds nuw [64 x %struct.input_absinfo], ptr %13, i64 0, i64 %41 + %71 = sitofp i32 %40 to float + %72 = getelementptr inbounds nuw i8, ptr %70, i64 8 + %73 = load i32, ptr %72, align 4, !tbaa !113 + %74 = getelementptr inbounds nuw i8, ptr %70, i64 4 + %75 = load i32, ptr %74, align 4, !tbaa !115 + %.not.i8 = icmp eq i32 %73, %75 + br i1 %.not.i8, label %84, label %76 + +76: ; preds = %69 + %77 = sub nsw i32 %73, %75 + %78 = sitofp i32 %75 to float + %79 = fsub float %71, %78 + %80 = sitofp i32 %77 to float + %81 = fdiv float %79, %80 + %82 = fmul float %81, 2.000000e+00 + %83 = fadd float %82, -1.000000e+00 + br label %84 + +84: ; preds = %76, %69 + %.0.i = phi float [ %83, %77 ], [ %71, %70 ] tail call void @_glfwInputJoystickAxis(ptr noundef nonnull %0, i32 noundef %43, float noundef %.0.i) #13 br label %handleAbsEvent.exit -handleAbsEvent.exit: ; preds = %85, %61, %.thread, %29, %28, %27 +handleAbsEvent.exit: ; preds = %84, %61, %.thread, %29, %28, %27 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #13 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #13 store i32 0, ptr %4, align 4, !tbaa !93 - %86 = load i32, ptr %5, align 8, !tbaa !94 - %87 = call i64 @read(i32 noundef %86, ptr noundef nonnull %3, i64 noundef 24) #13 - %88 = icmp slt i64 %87, 0 - br i1 %88, label %._crit_edge, label %21 + %85 = load i32, ptr %5, align 8, !tbaa !94 + %86 = call i64 @read(i32 noundef %85, ptr noundef nonnull %3, i64 noundef 24) #13 + %87 = icmp slt i64 %86, 0 + br i1 %87, label %._crit_edge, label %21 -89: ; preds = %18, %._crit_edge +88: ; preds = %18, %._crit_edge call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #13 - %90 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %91 = load i32, ptr %90, align 4, !tbaa !98 - ret i32 %91 + %89 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %90 = load i32, ptr %89, align 4, !tbaa !98 + ret i32 %90 } ; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) @@ -857,7 +857,7 @@ define internal fastcc void @pollAbsState(ptr noundef %0) unnamed_addr #0 { %19 = load i32, ptr %8, align 4, !tbaa !93 %20 = and i64 %indvars.iv, 56 %or.cond.i = icmp eq i64 %20, 16 - br i1 %or.cond.i, label %21, label %45 + br i1 %or.cond.i, label %21, label %44 21: ; preds = %17 %22 = add nuw i64 %indvars.iv, 4294967280 @@ -899,31 +899,31 @@ define internal fastcc void @pollAbsState(ptr noundef %0) unnamed_addr #0 { tail call void @_glfwInputJoystickHat(ptr noundef nonnull %0, i32 noundef %19, i8 noundef signext %44) #13 br label %handleAbsEvent.exit -45: ; preds = %17 - %46 = sitofp i32 %18 to float - %47 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %48 = load i32, ptr %47, align 4, !tbaa !113 - %49 = getelementptr inbounds nuw i8, ptr %12, i64 4 - %50 = load i32, ptr %49, align 4, !tbaa !115 - %.not.i = icmp eq i32 %48, %50 - br i1 %.not.i, label %59, label %51 - -51: ; preds = %45 - %52 = sub nsw i32 %48, %50 - %53 = sitofp i32 %50 to float - %54 = fsub float %46, %53 - %55 = sitofp i32 %52 to float - %56 = fdiv float %54, %55 - %57 = fmul float %56, 2.000000e+00 - %58 = fadd float %57, -1.000000e+00 - br label %59 - -59: ; preds = %51, %45 - %.0.i = phi float [ %58, %51 ], [ %46, %45 ] +44: ; preds = %17 + %45 = sitofp i32 %18 to float + %46 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %47 = load i32, ptr %46, align 4, !tbaa !113 + %48 = getelementptr inbounds nuw i8, ptr %12, i64 4 + %49 = load i32, ptr %48, align 4, !tbaa !115 + %.not.i = icmp eq i32 %47, %49 + br i1 %.not.i, label %58, label %50 + +50: ; preds = %44 + %51 = sub nsw i32 %47, %49 + %52 = sitofp i32 %49 to float + %53 = fsub float %45, %52 + %54 = sitofp i32 %51 to float + %55 = fdiv float %53, %54 + %56 = fmul float %55, 2.000000e+00 + %57 = fadd float %56, -1.000000e+00 + br label %58 + +58: ; preds = %50, %44 + %.0.i = phi float [ %57, %51 ], [ %45, %45 ] tail call void @_glfwInputJoystickAxis(ptr noundef nonnull %0, i32 noundef %19, float noundef %.0.i) #13 br label %handleAbsEvent.exit -handleAbsEvent.exit: ; preds = %59, %36, %11, %7 +handleAbsEvent.exit: ; preds = %58, %36, %11, %7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 64 br i1 %exitcond.not, label %6, label %7 diff --git a/bench/bullet3/optimized/btCollisionDispatcher.ll b/bench/bullet3/optimized/btCollisionDispatcher.ll index 99788e3e25a..e013196bdda 100644 --- a/bench/bullet3/optimized/btCollisionDispatcher.ll +++ b/bench/bullet3/optimized/btCollisionDispatcher.ll @@ -85,7 +85,7 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( %11 = getelementptr inbounds nuw i8, ptr %10, i64 24 %12 = load ptr, ptr %11, align 8 %13 = invoke noundef ptr %12(ptr noundef nonnull align 8 dereferenceable(8) %1) - to label %14 unwind label %28 + to label %14 unwind label %26 14: ; preds = %2 %15 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -94,7 +94,7 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 %18 = load ptr, ptr %17, align 8 %19 = invoke noundef ptr %18(ptr noundef nonnull align 8 dereferenceable(8) %1) - to label %20 unwind label %28 + to label %20 unwind label %26 20: ; preds = %14 %21 = getelementptr inbounds nuw i8, ptr %0, i64 64 @@ -103,62 +103,62 @@ define dso_local void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration( %23 = getelementptr inbounds nuw i8, ptr %0, i64 10440 br label %.preheader -.preheader: ; preds = %20, %27 +.preheader: ; preds = %20, %25 %indvars.iv26 = phi i64 [ 0, %20 ], [ %indvars.iv.next27, %27 ] %24 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %22, i64 0, i64 %indvars.iv26 %25 = getelementptr inbounds nuw [36 x [36 x ptr]], ptr %23, i64 0, i64 %indvars.iv26 %26 = trunc nuw nsw i64 %indvars.iv26 to i32 br label %30 -27: ; preds = %44 +25: ; preds = %42 %indvars.iv.next27 = add nuw nsw i64 %indvars.iv26, 1 %exitcond29.not = icmp eq i64 %indvars.iv.next27, 36 - br i1 %exitcond29.not, label %48, label %.preheader, !llvm.loop !27 + br i1 %exitcond29.not, label %46, label %.preheader, !llvm.loop !27 -28: ; preds = %14, %2 - %29 = landingpad { ptr, i32 } +26: ; preds = %14, %2 + %27 = landingpad { ptr, i32 } cleanup - br label %49 + br label %47 -30: ; preds = %.preheader, %44 +28: ; preds = %.preheader, %42 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %44 ] - %31 = load ptr, ptr %8, align 8, !tbaa !23 - %32 = load ptr, ptr %31, align 8, !tbaa !4 - %33 = getelementptr inbounds nuw i8, ptr %32, i64 32 - %34 = load ptr, ptr %33, align 8 - %35 = trunc nuw nsw i64 %indvars.iv to i32 - %36 = invoke noundef ptr %34(ptr noundef nonnull align 8 dereferenceable(8) %31, i32 noundef %26, i32 noundef %35) - to label %37 unwind label %46 - -37: ; preds = %30 - %38 = getelementptr inbounds nuw [36 x ptr], ptr %24, i64 0, i64 %indvars.iv - store ptr %36, ptr %38, align 8, !tbaa !29 - %39 = load ptr, ptr %8, align 8, !tbaa !23 - %40 = load ptr, ptr %39, align 8, !tbaa !4 - %41 = getelementptr inbounds nuw i8, ptr %40, i64 40 - %42 = load ptr, ptr %41, align 8 - %43 = invoke noundef ptr %42(ptr noundef nonnull align 8 dereferenceable(8) %39, i32 noundef %26, i32 noundef %35) - to label %44 unwind label %46 - -44: ; preds = %37 - %45 = getelementptr inbounds nuw [36 x ptr], ptr %25, i64 0, i64 %indvars.iv - store ptr %43, ptr %45, align 8, !tbaa !29 + %29 = load ptr, ptr %8, align 8, !tbaa !23 + %30 = load ptr, ptr %29, align 8, !tbaa !4 + %31 = getelementptr inbounds nuw i8, ptr %30, i64 32 + %32 = load ptr, ptr %31, align 8 + %33 = trunc nuw nsw i64 %indvars.iv to i32 + %34 = invoke noundef ptr %34(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef %26, i32 noundef %33) + to label %37 unwind label %44 + +35: ; preds = %28 + %36 = getelementptr inbounds nuw [36 x ptr], ptr %24, i64 0, i64 %indvars.iv + store ptr %34, ptr %36, align 8, !tbaa !29 + %37 = load ptr, ptr %8, align 8, !tbaa !23 + %38 = load ptr, ptr %37, align 8, !tbaa !4 + %39 = getelementptr inbounds nuw i8, ptr %38, i64 40 + %40 = load ptr, ptr %39, align 8 + %41 = invoke noundef ptr %42(ptr noundef nonnull align 8 dereferenceable(8) %37, i32 noundef %26, i32 noundef %33) + to label %44 unwind label %44 + +42: ; preds = %35 + %43 = getelementptr inbounds nuw [36 x ptr], ptr %25, i64 0, i64 %indvars.iv + store ptr %41, ptr %43, align 8, !tbaa !29 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 36 - br i1 %exitcond.not, label %27, label %30, !llvm.loop !31 + br i1 %exitcond.not, label %25, label %28, !llvm.loop !31 -46: ; preds = %37, %30 - %47 = landingpad { ptr, i32 } +44: ; preds = %35, %28 + %45 = landingpad { ptr, i32 } cleanup - br label %49 + br label %47 -48: ; preds = %27 +46: ; preds = %25 ret void -49: ; preds = %46, %28 - %.pn = phi { ptr, i32 } [ %47, %46 ], [ %29, %28 ] - %50 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %50) #11 +47: ; preds = %44, %26 + %.pn = phi { ptr, i32 } [ %45, %46 ], [ %27, %28 ] + %48 = getelementptr inbounds nuw i8, ptr %0, i64 16 + tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %48) #11 tail call void @_ZN12btDispatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #11 resume { ptr, i32 } %.pn } diff --git a/bench/bullet3/optimized/btDeformableBodySolver.ll b/bench/bullet3/optimized/btDeformableBodySolver.ll index e0f266bd8f0..be7d7de6b2b 100644 --- a/bench/bullet3/optimized/btDeformableBodySolver.ll +++ b/bench/bullet3/optimized/btDeformableBodySolver.ll @@ -12542,15 +12542,15 @@ _ZN11btSparseSdfILi3EE5ResetEv.exit: ; preds = %._crit_edge.i, %137 %165 = getelementptr inbounds [4 x float], ptr %163, i64 0, i64 %164 %166 = load float, ptr %165, align 4, !tbaa !45 %sext = add i64 %.sroa.5.0.insert.shift.i, 4294967296 - %167 = ashr exact i64 %sext, 32 - %168 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %167 - %169 = getelementptr inbounds [4 x [4 x float]], ptr %168, i64 0, i64 %162 + %165 = ashr exact i64 %sext, 32 + %166 = getelementptr inbounds [4 x [4 x [4 x float]]], ptr %.1, i64 0, i64 %165 + %169 = getelementptr inbounds [4 x [4 x float]], ptr %166, i64 0, i64 %162 %170 = getelementptr inbounds [4 x float], ptr %169, i64 0, i64 %164 %171 = load float, ptr %170, align 4, !tbaa !45 %sext138 = add i64 %.sroa.5.0.insert.shift.i141, 4294967296 - %172 = ashr exact i64 %sext138, 32 - %173 = getelementptr inbounds [4 x [4 x float]], ptr %168, i64 0, i64 %172 - %174 = getelementptr inbounds [4 x float], ptr %173, i64 0, i64 %164 + %168 = ashr exact i64 %sext138, 32 + %169 = getelementptr inbounds [4 x [4 x float]], ptr %168, i64 0, i64 %168 + %174 = getelementptr inbounds [4 x float], ptr %169, i64 0, i64 %164 %175 = load float, ptr %174, align 4, !tbaa !45 %176 = getelementptr inbounds [4 x [4 x float]], ptr %161, i64 0, i64 %172 %177 = getelementptr inbounds [4 x float], ptr %176, i64 0, i64 %164 @@ -12596,8 +12596,8 @@ _ZN11btSparseSdfILi3EE5ResetEv.exit: ; preds = %._crit_edge.i, %137 %216 = fsub float %215, %213 %217 = tail call noundef float @llvm.fmuladd.f32(float %216, float %75, float %213) %218 = fmul float %211, %211 - %219 = tail call float @llvm.fmuladd.f32(float %205, float %205, float %218) - %220 = tail call noundef float @llvm.fmuladd.f32(float %217, float %217, float %219) + %sqrt.i = tail call float @llvm.fmuladd.f32(float %205, float %205, float %218) + %220 = tail call noundef float @llvm.fmuladd.f32(float %217, float %217, float %sqrt.i) %221 = fcmp ult float %220, 0x3D10000000000000 br i1 %221, label %227, label %222 @@ -12609,32 +12609,32 @@ _ZN11btSparseSdfILi3EE5ResetEv.exit: ; preds = %._crit_edge.i, %137 %226 = fmul float %217, %223 br label %_ZN9btVector313safeNormalizeEv.exit -227: ; preds = %.loopexit - %228 = getelementptr inbounds nuw i8, ptr %3, i64 12 - store float 0.000000e+00, ptr %228, align 4, !tbaa !45 +221: ; preds = %.loopexit + %222 = getelementptr inbounds nuw i8, ptr %3, i64 12 + store float 0.000000e+00, ptr %222, align 4, !tbaa !45 br label %_ZN9btVector313safeNormalizeEv.exit -_ZN9btVector313safeNormalizeEv.exit: ; preds = %222, %227 +_ZN9btVector313safeNormalizeEv.exit: ; preds = %222, %221 %.sink7.i = phi float [ 1.000000e+00, %227 ], [ %224, %222 ] %.sink6.i = phi float [ 0.000000e+00, %227 ], [ %225, %222 ] %.sink.i = phi float [ 0.000000e+00, %227 ], [ %226, %222 ] - %229 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %230 = getelementptr inbounds nuw i8, ptr %3, i64 4 + %223 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %224 = getelementptr inbounds nuw i8, ptr %3, i64 4 store float %.sink7.i, ptr %3, align 4, !tbaa !45 - store float %.sink6.i, ptr %230, align 4, !tbaa !45 - store float %.sink.i, ptr %229, align 4, !tbaa !45 - %231 = tail call noundef float @llvm.fmuladd.f32(float %188, float %69, float %166) - %232 = tail call noundef float @llvm.fmuladd.f32(float %189, float %69, float %178) - %233 = fsub float %232, %231 - %234 = tail call noundef float @llvm.fmuladd.f32(float %233, float %75, float %231) - %235 = tail call noundef float @llvm.fmuladd.f32(float %190, float %69, float %181) - %236 = tail call noundef float @llvm.fmuladd.f32(float %191, float %69, float %187) - %237 = fsub float %236, %235 - %238 = tail call noundef float @llvm.fmuladd.f32(float %237, float %75, float %235) - %239 = fsub float %238, %234 - %240 = tail call noundef float @llvm.fmuladd.f32(float %239, float %81, float %234) - %241 = fsub float %240, %4 - ret float %241 + store float %.sink6.i, ptr %224, align 4, !tbaa !45 + store float %.sink.i, ptr %223, align 4, !tbaa !45 + %225 = tail call noundef float @llvm.fmuladd.f32(float %188, float %69, float %166) + %226 = tail call noundef float @llvm.fmuladd.f32(float %189, float %69, float %178) + %227 = fsub float %226, %225 + %228 = tail call noundef float @llvm.fmuladd.f32(float %227, float %75, float %225) + %229 = tail call noundef float @llvm.fmuladd.f32(float %190, float %69, float %181) + %230 = tail call noundef float @llvm.fmuladd.f32(float %191, float %69, float %187) + %231 = fsub float %230, %229 + %232 = tail call noundef float @llvm.fmuladd.f32(float %231, float %75, float %229) + %233 = fsub float %232, %228 + %234 = tail call noundef float @llvm.fmuladd.f32(float %233, float %81, float %228) + %235 = fsub float %234, %4 + ret float %235 } ; Function Attrs: inlinehint mustprogress uwtable @@ -16796,32 +16796,32 @@ define linkonce_odr dso_local void @_ZN11btSparseSdfILi3EE9BuildCellERNS0_4CellE ret void 33: ; preds = %2, %38 - %indvars.iv44 = phi i64 [ 0, %2 ], [ %indvars.iv.next45, %38 ] + %indvars.iv41 = phi i64 [ 0, %2 ], [ %indvars.iv.next42, %38 ] %34 = load float, ptr %18, align 8, !tbaa !410 - %35 = trunc nuw nsw i64 %indvars.iv44 to i32 + %35 = trunc nuw nsw i64 %indvars.iv41 to i32 %36 = uitofp nneg i32 %35 to float %37 = call float @llvm.fmuladd.f32(float %34, float %36, float %22) %invariant.gep36 = getelementptr inbounds nuw [4 x float], ptr %1, i64 0, i64 %indvars.iv44 br label %39 38: ; preds = %44 - %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 - %exitcond47.not = icmp eq i64 %indvars.iv.next45, 4 - br i1 %exitcond47.not, label %32, label %33, !llvm.loop !456 + %indvars.iv.next42 = add nuw nsw i64 %indvars.iv41, 1 + %exitcond44.not = icmp eq i64 %indvars.iv.next42, 4 + br i1 %exitcond44.not, label %32, label %33, !llvm.loop !456 39: ; preds = %33, %44 - %indvars.iv40 = phi i64 [ 0, %33 ], [ %indvars.iv.next41, %44 ] + %indvars.iv37 = phi i64 [ 0, %33 ], [ %indvars.iv.next38, %44 ] %40 = load float, ptr %18, align 8, !tbaa !410 - %41 = trunc nuw nsw i64 %indvars.iv40 to i32 + %41 = trunc nuw nsw i64 %indvars.iv37 to i32 %42 = uitofp nneg i32 %41 to float %43 = call float @llvm.fmuladd.f32(float %40, float %42, float %21) %gep = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep36, i64 0, i64 %indvars.iv40 br label %45 44: ; preds = %_ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit - %indvars.iv.next41 = add nuw nsw i64 %indvars.iv40, 1 - %exitcond43.not = icmp eq i64 %indvars.iv.next41, 4 - br i1 %exitcond43.not, label %38, label %39, !llvm.loop !457 + %indvars.iv.next38 = add nuw nsw i64 %indvars.iv37, 1 + %exitcond40.not = icmp eq i64 %indvars.iv.next38, 4 + br i1 %exitcond40.not, label %38, label %39, !llvm.loop !457 45: ; preds = %39, %_ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit %indvars.iv = phi i64 [ 0, %39 ], [ %indvars.iv.next, %_ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit ] @@ -16856,8 +16856,8 @@ define linkonce_odr dso_local void @_ZN11btSparseSdfILi3EE9BuildCellERNS0_4CellE _ZN11btSparseSdfILi3EE15DistanceToShapeERK9btVector3PK16btCollisionShape.exit: ; preds = %45, %54 %.0.i = phi float [ %55, %54 ], [ 0.000000e+00, %45 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #27 - %gep35 = getelementptr inbounds nuw [4 x [4 x [4 x float]]], ptr %gep, i64 0, i64 %indvars.iv - store float %.0.i, ptr %gep35, align 4, !tbaa !45 + %56 = getelementptr inbounds nuw [4 x [4 x [4 x float]]], ptr %gep, i64 0, i64 %indvars.iv + store float %.0.i, ptr %56, align 4, !tbaa !45 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #27 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 diff --git a/bench/clamav/optimized/Ppmd7.ll b/bench/clamav/optimized/Ppmd7.ll index 2bd212969e0..98f34b3fdc9 100644 --- a/bench/clamav/optimized/Ppmd7.ll +++ b/bench/clamav/optimized/Ppmd7.ll @@ -289,7 +289,7 @@ define internal fastcc void @RestartModel(ptr noundef captures(none) initializes %exitcond87.not = icmp eq i64 %indvars.iv.next85, 128 br i1 %exitcond87.not, label %.preheader67, label %.preheader68 -.preheader: ; preds = %.preheader67, %71 +.preheader: ; preds = %.preheader67, %70 %indvars.iv92 = phi i64 [ 0, %.preheader67 ], [ %indvars.iv.next93, %71 ] %63 = getelementptr inbounds nuw [25 x [16 x %struct.CPpmd_See]], ptr %49, i64 0, i64 %indvars.iv92 %64 = trunc i64 %indvars.iv92 to i16 @@ -297,7 +297,7 @@ define internal fastcc void @RestartModel(ptr noundef captures(none) initializes %66 = add nuw nsw i16 %65, 80 br label %67 -67: ; preds = %.preheader, %67 +67: ; preds = %.preheader, %67 %indvars.iv88 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next89, %67 ] %68 = getelementptr inbounds nuw [16 x %struct.CPpmd_See], ptr %63, i64 0, i64 %indvars.iv88 %69 = getelementptr inbounds nuw i8, ptr %68, i64 2 @@ -307,14 +307,14 @@ define internal fastcc void @RestartModel(ptr noundef captures(none) initializes store i8 4, ptr %70, align 1, !tbaa !46 %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 %exitcond91.not = icmp eq i64 %indvars.iv.next89, 16 - br i1 %exitcond91.not, label %71, label %67 + br i1 %exitcond91.not, label %70, label %67 -71: ; preds = %67 +70: ; preds = %67 %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 %exitcond95.not = icmp eq i64 %indvars.iv.next93, 25 - br i1 %exitcond95.not, label %72, label %.preheader + br i1 %exitcond95.not, label %71, label %.preheader -72: ; preds = %71 +71: ; preds = %70 ret void } diff --git a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll index 0953901cade..1218ee11bf6 100644 --- a/bench/clap-rs/optimized/5651dp9k16h53y8x.ll +++ b/bench/clap-rs/optimized/5651dp9k16h53y8x.ll @@ -3741,9 +3741,9 @@ define hidden { ptr, i64 } @_ZN8anstream7adapter5strip8next_str17h4bd4a530e0bdbd br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i", %.lr.ph.preheader.i.i - %.020.i.i = phi i64 [ %27, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ 0, %.lr.ph.preheader.i.i ] + %.020.i.i = phi i64 [ %26, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ 0, %.lr.ph.preheader.i.i ] %8 = phi ptr [ %10, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ %3, %.lr.ph.preheader.i.i ] - %9 = phi i8 [ %24, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ %.promoted19.i.i, %.lr.ph.preheader.i.i ] + %9 = phi i8 [ %23, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" ], [ %.promoted19.i.i, %.lr.ph.preheader.i.i ] %10 = getelementptr inbounds nuw i8, ptr %8, i64 1 %.val14.i.i = load i8, ptr %8, align 1, !noalias !876, !noundef !10 %11 = zext i8 %.val14.i.i to i64 @@ -3761,28 +3761,28 @@ define hidden { ptr, i64 } @_ZN8anstream7adapter5strip8next_str17h4bd4a530e0bdbd _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i: ; preds = %15, %.lr.ph.i.i %.0.i.i.i.i.i.i = phi i8 [ %19, %15 ], [ %13, %.lr.ph.i.i ] - %20 = and i8 %.0.i.i.i.i.i.i, 15 - %21 = lshr i8 %.0.i.i.i.i.i.i, 4 - %.not.i.i.i.i.i = icmp eq i8 %20, 0 - br i1 %.not.i.i.i.i.i, label %23, label %22 - -22: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i - store i8 %20, ptr %1, align 1, !alias.scope !872, !noalias !873 - br label %23 - -23: ; preds = %22, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i - %24 = phi i8 [ %20, %22 ], [ %9, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i ] - switch i8 %21, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" [ - i8 12, label %25 + %19 = and i8 %.0.i.i.i.i.i.i, 15 + %20 = lshr i8 %.0.i.i.i.i.i.i, 4 + %.not.i.i.i.i.i = icmp eq i8 %19, 0 + br i1 %.not.i.i.i.i.i, label %22, label %21 + +21: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i + store i8 %19, ptr %1, align 1, !alias.scope !872, !noalias !873 + br label %22 + +22: ; preds = %21, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i + %23 = phi i8 [ %19, %22 ], [ %9, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i ] + switch i8 %20, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" [ + i8 12, label %24 i8 15, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" - i8 5, label %26 + i8 5, label %25 ] -25: ; preds = %23 +24: ; preds = %22 %.not.i.i.i.i.i.i = icmp eq i8 %.val14.i.i, 127 br i1 %.not.i.i.i.i.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i", label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" -26: ; preds = %23 +25: ; preds = %22 switch i8 %.val14.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" [ i8 9, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" i8 10, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" @@ -3791,64 +3791,64 @@ _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i: ; pre i8 32, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" ] -"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i": ; preds = %26, %25, %23 - %27 = add nuw i64 %.020.i.i, 1 - %28 = icmp eq ptr %10, %6 - br i1 %28, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread", label %.lr.ph.i.i +"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i": ; preds = %25, %24, %22 + %26 = add nuw i64 %.020.i.i, 1 + %27 = icmp eq ptr %10, %6 + br i1 %27, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread", label %.lr.ph.i.i "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread": ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf0b581171e25815cE.exit.i.i" - %29 = getelementptr inbounds i8, ptr %3, i64 %5 + %28 = getelementptr inbounds i8, ptr %3, i64 %5 store i8 12, ptr %1, align 1 br label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" -"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit": ; preds = %23, %25, %26, %26, %26, %26, %26 +"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit": ; preds = %22, %24, %25, %25, %25, %25, %25 %.not = icmp ugt i64 %.020.i.i, %5 - br i1 %.not, label %30, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" + br i1 %.not, label %29, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" -30: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" +29: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.8a15c8b2664a73ecad88cbf6a449d693.56, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8a15c8b2664a73ecad88cbf6a449d693.58) #40 unreachable "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread": ; preds = %2, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" %switch54 = phi i64 [ %.020.i.i, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit" ], [ 0, %2 ] - %31 = getelementptr inbounds i8, ptr %3, i64 %switch54 - %32 = sub nuw i64 %5, %switch54 - store ptr %31, ptr %0, align 8 - store i64 %32, ptr %4, align 8 + %30 = getelementptr inbounds i8, ptr %3, i64 %switch54 + %31 = sub nuw i64 %5, %switch54 + store ptr %30, ptr %0, align 8 + store i64 %31, ptr %4, align 8 store i8 12, ptr %1, align 1 - %33 = icmp eq i64 %switch54, %5 - br i1 %33, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread", label %.lr.ph.i + %32 = icmp eq i64 %switch54, %5 + br i1 %32, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread", label %.lr.ph.i .lr.ph.i: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread", %.backedge.i.i %.0.i1.i = phi i64 [ %.0.be.i.i, %.backedge.i.i ], [ 0, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ] - %34 = phi ptr [ %35, %.backedge.i.i ], [ %31, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ] - %35 = getelementptr inbounds nuw i8, ptr %34, i64 1 - %.val.i.i = load i8, ptr %34, align 1, !noalias !877, !noundef !10 - %36 = zext i8 %.val.i.i to i64 - %37 = getelementptr inbounds nuw [256 x i8], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %36 - %38 = load i8, ptr %37, align 1, !noalias !877, !noundef !10 - %39 = icmp eq i8 %38, 0 - br i1 %39, label %40, label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 - -40: ; preds = %.lr.ph.i - %41 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 3072), i64 0, i64 %36 - %42 = load i8, ptr %41, align 1, !noalias !877, !noundef !10 + %33 = phi ptr [ %34, %.backedge.i.i ], [ %30, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ] + %34 = getelementptr inbounds nuw i8, ptr %33, i64 1 + %.val.i.i = load i8, ptr %33, align 1, !noalias !877, !noundef !10 + %35 = zext i8 %.val.i.i to i64 + %36 = getelementptr inbounds nuw [256 x i8], ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 0, i64 %35 + %37 = load i8, ptr %36, align 1, !noalias !877, !noundef !10 + %38 = icmp eq i8 %37, 0 + br i1 %38, label %39, label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 + +39: ; preds = %.lr.ph.i + %40 = getelementptr inbounds nuw [256 x i8], ptr getelementptr inbounds nuw (i8, ptr @anon.8a15c8b2664a73ecad88cbf6a449d693.0, i64 3072), i64 0, i64 %35 + %41 = load i8, ptr %40, align 1, !noalias !877, !noundef !10 br label %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 -_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; preds = %40, %.lr.ph.i - %.0.i.i.i.i.i.i47 = phi i8 [ %42, %40 ], [ %38, %.lr.ph.i ] - %43 = lshr i8 %.0.i.i.i.i.i.i47, 4 - switch i8 %43, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" [ - i8 12, label %44 +_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; preds = %39, %.lr.ph.i + %.0.i.i.i.i.i.i47 = phi i8 [ %41, %40 ], [ %37, %.lr.ph.i ] + %42 = lshr i8 %.0.i.i.i.i.i.i47, 4 + switch i8 %42, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" [ + i8 12, label %43 i8 15, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" - i8 5, label %45 + i8 5, label %44 ] -44: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 +43: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 %.not.i.i.i.i.i.i49 = icmp eq i8 %.val.i.i, 127 br i1 %.not.i.i.i.i.i.i49, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit", label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" -45: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 +44: ; preds = %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 switch i8 %.val.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" [ i8 9, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" i8 10, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" @@ -3857,53 +3857,53 @@ _ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46: ; p i8 32, label %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" ] -"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i": ; preds = %45, %45, %45, %45, %45, %44, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 - %46 = add i64 %.0.i1.i, 1 +"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i": ; preds = %44, %44, %44, %44, %44, %43, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 + %45 = add i64 %.0.i1.i, 1 br label %.backedge.i.i -"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i": ; preds = %45, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 +"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i": ; preds = %44, %_ZN13anstyle_parse5state12state_change17h79664e659a8016d1E.exit.i.i.i.i.i46 %spec.select.i.i.i.i.i = icmp slt i8 %.val.i.i, -64 - %47 = zext i1 %spec.select.i.i.i.i.i to i64 - %spec.select.i.i.i.i = add i64 %.0.i1.i, %47 + %46 = zext i1 %spec.select.i.i.i.i.i to i64 + %spec.select.i.i.i.i = add i64 %.0.i1.i, %46 br i1 %spec.select.i.i.i.i.i, label %.backedge.i.i, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" .backedge.i.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i", %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" - %.0.be.i.i = phi i64 [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ], [ %46, %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" ] - %48 = icmp eq ptr %35, %6 - br i1 %48, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", label %.lr.ph.i + %.0.be.i.i = phi i64 [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ], [ %45, %"_ZN8anstream7adapter5strip8next_str28_$u7b$$u7b$closure$u7d$$u7d$17h07ae25c33373a35bE.exit.thread.i.i.i.i" ] + %47 = icmp eq ptr %34, %6 + br i1 %47, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", label %.lr.ph.i -"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit": ; preds = %44, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" +"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit": ; preds = %43, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" %switch39 = phi i64 [ %.0.i1.i, %44 ], [ %spec.select.i.i.i.i, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hbe978da3047f1113E.exit.i.i" ] - %.not38 = icmp ugt i64 %switch39, %32 - br i1 %.not38, label %49, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" + %.not38 = icmp ugt i64 %switch39, %31 + br i1 %.not38, label %48, label %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" -49: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" +48: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.8a15c8b2664a73ecad88cbf6a449d693.56, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8a15c8b2664a73ecad88cbf6a449d693.59) #40 unreachable "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread": ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread", %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" - %.ph59 = phi ptr [ %31, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ], [ %29, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread" ] + %.ph59 = phi ptr [ %30, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread" ], [ %28, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h2a010e15f52daa72E.exit.thread.thread" ] store ptr %.ph59, ptr %0, align 8 store i64 0, ptr %4, align 8 - br label %53 + br label %52 "_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread": ; preds = %.backedge.i.i, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" - %switch3957 = phi i64 [ %switch39, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" ], [ %32, %.backedge.i.i ] + %switch3957 = phi i64 [ %switch39, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit" ], [ %31, %.backedge.i.i ] %switch3957.fr = freeze i64 %switch3957 - %50 = getelementptr inbounds i8, ptr %31, i64 %switch3957.fr - %51 = sub nuw i64 %32, %switch3957.fr - store ptr %50, ptr %0, align 8 - store i64 %51, ptr %4, align 8 - %52 = icmp eq i64 %switch3957.fr, 0 - %spec.select = select i1 %52, ptr null, ptr %31 - br label %53 - -53: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" + %49 = getelementptr inbounds i8, ptr %30, i64 %switch3957.fr + %50 = sub nuw i64 %31, %switch3957.fr + store ptr %49, ptr %0, align 8 + store i64 %50, ptr %4, align 8 + %51 = icmp eq i64 %switch3957.fr, 0 + %spec.select = select i1 %51, ptr null, ptr %30 + br label %52 + +52: ; preds = %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread", %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" %switch395762 = phi i64 [ 0, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" ], [ %switch3957.fr, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" ] - %54 = phi ptr [ null, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" ], [ %spec.select, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" ] - %55 = insertvalue { ptr, i64 } poison, ptr %54, 0 - %56 = insertvalue { ptr, i64 } %55, i64 %switch395762, 1 - ret { ptr, i64 } %56 + %53 = phi ptr [ null, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread.thread" ], [ %spec.select, %"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17h3be62512fddc7e1dE.exit.thread" ] + %54 = insertvalue { ptr, i64 } poison, ptr %53, 0 + %55 = insertvalue { ptr, i64 } %54, i64 %switch395762, 1 + ret { ptr, i64 } %55 } ; Function Attrs: inlinehint nofree norecurse nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable diff --git a/bench/cmake/optimized/nghttp2_hd_huffman.ll b/bench/cmake/optimized/nghttp2_hd_huffman.ll index 1c7af631dfb..6087c5442da 100644 --- a/bench/cmake/optimized/nghttp2_hd_huffman.ll +++ b/bench/cmake/optimized/nghttp2_hd_huffman.ll @@ -219,7 +219,7 @@ define dso_local i64 @nghttp2_hd_huff_decode(ptr noundef captures(none) %0, ptr %.not25 = icmp sgt i16 %20, -1 br i1 %.not25, label %26, label %21 -21: ; preds = %9 +21: ; preds = %9 %22 = getelementptr inbounds nuw i8, ptr %19, i64 2 %23 = load i8, ptr %22, align 2, !tbaa !31 %24 = load ptr, ptr %8, align 8, !tbaa !32 @@ -228,7 +228,7 @@ define dso_local i64 @nghttp2_hd_huff_decode(ptr noundef captures(none) %0, ptr store i8 %23, ptr %24, align 1, !tbaa !4 br label %26 -26: ; preds = %21, %9 +26:; preds = %21, %9 %27 = and i16 %20, 511 %28 = zext nneg i16 %27 to i64 %29 = getelementptr inbounds nuw [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %28 @@ -239,7 +239,7 @@ define dso_local i64 @nghttp2_hd_huff_decode(ptr noundef captures(none) %0, ptr %.not26 = icmp sgt i16 %33, -1 br i1 %.not26, label %39, label %34 -34: ; preds = %26 +34:; preds = %26 %35 = getelementptr inbounds nuw i8, ptr %32, i64 2 %36 = load i8, ptr %35, align 2, !tbaa !31 %37 = load ptr, ptr %8, align 8, !tbaa !32 @@ -253,11 +253,11 @@ define dso_local i64 @nghttp2_hd_huff_decode(ptr noundef captures(none) %0, ptr br i1 %.not, label %._crit_edge, label %9, !llvm.loop !33 ._crit_edge: ; preds = %39, %5 - %40 = phi i16 [ %7, %5 ], [ %33, %39 ] - store i16 %40, ptr %0, align 2, !tbaa !26 + %38 = phi i16 [ %7, %5 ], [ %33, %39 ] + store i16 %38, ptr %0, align 2, !tbaa !26 %.not23 = icmp ne i32 %4, 0 - %41 = and i16 %40, 16384 - %.not24 = icmp eq i16 %41, 0 + %39 = and i16 %38, 16384 + %.not24 = icmp eq i16 %39, 0 %or.cond = select i1 %.not23, i1 %.not24, i1 false %.0 = select i1 %or.cond, i64 -523, i64 %3 ret i64 %.0 diff --git a/bench/darktable/optimized/blend.ll b/bench/darktable/optimized/blend.ll index bb26afa87f5..08b00a0409b 100644 --- a/bench/darktable/optimized/blend.ll +++ b/bench/darktable/optimized/blend.ll @@ -339,23 +339,23 @@ define range(i32 0, 2) i32 @dt_develop_blendif_init_masking_profile(ptr noundef br label %.preheader33 .preheader33: ; preds = %18, %24 - %.03039 = phi i64 [ 0, %18 ], [ %25, %24 ] + %.03037 = phi i64 [ 0, %18 ], [ %25, %24 ] %22 = getelementptr inbounds nuw [4 x [4 x float]], ptr @__const.dt_develop_blendif_init_masking_profile.M, i64 0, i64 %.03039 %23 = getelementptr inbounds nuw [4 x [4 x float]], ptr %20, i64 0, i64 %.03039 %invariant.gep36 = getelementptr inbounds nuw [4 x float], ptr %21, i64 0, i64 %.03039 br label %.preheader .preheader: ; preds = %.preheader33, %26 - %.02938 = phi i64 [ 0, %.preheader33 ], [ %28, %26 ] + %.02936 = phi i64 [ 0, %.preheader33 ], [ %28, %26 ] %invariant.gep = getelementptr inbounds nuw [4 x float], ptr %19, i64 0, i64 %.02938 br label %29 -24: ; preds = %26 +24:; preds = %26 %25 = add nuw nsw i64 %.03039, 1 %exitcond41.not = icmp eq i64 %25, 3 br i1 %exitcond41.not, label %.loopexit, label %.preheader33 -26: ; preds = %29 +26: ; preds = %29 %27 = getelementptr inbounds nuw [4 x float], ptr %23, i64 0, i64 %.02938 store float %34, ptr %27, align 4, !tbaa !31 %gep37 = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep36, i64 0, i64 %.02938 @@ -364,8 +364,8 @@ define range(i32 0, 2) i32 @dt_develop_blendif_init_masking_profile(ptr noundef %exitcond40.not = icmp eq i64 %28, 3 br i1 %exitcond40.not, label %24, label %.preheader -29: ; preds = %.preheader, %29 - %.035 = phi i64 [ 0, %.preheader ], [ %35, %29 ] +29: ; preds = %.preheader, %29 + %.02834 = phi i64 [ 0, %.preheader ], [ %35, %29 ] %.02834 = phi float [ 0.000000e+00, %.preheader ], [ %34, %29 ] %30 = getelementptr inbounds nuw [4 x float], ptr %22, i64 0, i64 %.035 %31 = load float, ptr %30, align 4, !tbaa !31 diff --git a/bench/darktable/optimized/colordata.ll b/bench/darktable/optimized/colordata.ll index 88c9da16ce6..1c717ec5a5e 100644 --- a/bench/darktable/optimized/colordata.ll +++ b/bench/darktable/optimized/colordata.ll @@ -856,12 +856,12 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no %36 = add i32 %35, %21 br label %37 -37: ; preds = %33, %97 +37: ; preds = %33, %95 %indvars.iv79 = phi i64 [ 0, %33 ], [ %indvars.iv.next80, %97 ] %38 = getelementptr inbounds nuw [792 x %struct.anon], ptr @_ZZN6LibRaw11adobe_coeffEjPKciE5table, i64 0, i64 %indvars.iv79 %39 = load i32, ptr %38, align 8, !tbaa !75 %40 = icmp eq i32 %39, %1 - br i1 %40, label %41, label %97 + br i1 %40, label %41, label %95 41: ; preds = %37 %42 = getelementptr inbounds nuw i8, ptr %38, i64 8 @@ -873,7 +873,7 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no 45: ; preds = %41 %46 = tail call i32 @strncasecmp(ptr noundef %2, ptr noundef nonnull %43, i64 noundef %44) #10 %.not53 = icmp eq i32 %46, 0 - br i1 %.not53, label %47, label %97 + br i1 %.not53, label %47, label %95 47: ; preds = %45, %41 %48 = getelementptr inbounds nuw i8, ptr %0, i64 532 @@ -949,17 +949,17 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no store double %83, ptr %84, align 8, !tbaa !84 %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1 %exitcond90.not = icmp eq i64 %indvars.iv.next88, 12 - br i1 %exitcond90.not, label %95, label %.split.us, !llvm.loop !85 + br i1 %exitcond90.not, label %93, label %.split.us, !llvm.loop !85 .split: ; preds = %70, %.split %indvars.iv83 = phi i64 [ %indvars.iv.next84, %.split ], [ 0, %70 ] - %85 = getelementptr inbounds nuw [12 x i32], ptr %68, i64 0, i64 %indvars.iv83 - %86 = load i32, ptr %85, align 4, !tbaa !71 - %87 = sitofp i32 %86 to float - %88 = fmul reassoc nsz arcp contract afn float %87, 0x3F1A36E2E0000000 + %84 = getelementptr inbounds nuw [12 x i32], ptr %68, i64 0, i64 %indvars.iv83 + %85 = load i32, ptr %84, align 4, !tbaa !71 + %86 = sitofp i32 %85 to float + %87 = fmul reassoc nsz arcp contract afn float %86, 0x3F1A36E2E0000000 %.lhs.trunc64 = trunc i64 %indvars.iv83 to i8 - %89 = udiv i8 %.lhs.trunc64, 3 - %90 = zext nneg i8 %89 to i64 + %88 = udiv i8 %.lhs.trunc64, 3 + %89 = zext nneg i8 %88 to i64 %91 = getelementptr inbounds nuw [4 x [3 x float]], ptr %72, i64 0, i64 %90 %92 = urem i8 %.lhs.trunc64, 3 %93 = zext nneg i8 %92 to i64 @@ -969,17 +969,17 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no %exitcond86.not = icmp eq i64 %indvars.iv.next84, 12 br i1 %exitcond86.not, label %.critedge61, label %.split, !llvm.loop !85 -95: ; preds = %.split.us - %96 = getelementptr inbounds nuw i8, ptr %0, i64 153304 - call void @_ZN6LibRaw13cam_xyz_coeffEPA4_fPA3_d(ptr noundef nonnull align 8 dereferenceable(767680) %0, ptr noundef nonnull %96, ptr noundef nonnull %5) +93: ; preds = %.split.us + %94 = getelementptr inbounds nuw i8, ptr %0, i64 153304 + call void @_ZN6LibRaw13cam_xyz_coeffEPA4_fPA3_d(ptr noundef nonnull align 8 dereferenceable(767680) %0, ptr noundef nonnull %94, ptr noundef nonnull %5) br label %.critedge61 -97: ; preds = %45, %37 +95: ; preds = %45, %37 %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 %exitcond82.not = icmp eq i64 %indvars.iv.next80, 792 br i1 %exitcond82.not, label %.critedge61, label %37, !llvm.loop !86 -.critedge61: ; preds = %97, %.split, %67, %95, %4 +.critedge61: ; preds = %95, %.split, %67, %93, %4 %.0 = phi i32 [ 1, %4 ], [ 1, %67 ], [ 1, %95 ], [ 1, %.split ], [ 0, %97 ] call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #9 ret i32 %.0 diff --git a/bench/darktable/optimized/exif_gps.ll b/bench/darktable/optimized/exif_gps.ll index 61bf74fa4d9..f5c3f775558 100644 --- a/bench/darktable/optimized/exif_gps.ll +++ b/bench/darktable/optimized/exif_gps.ll @@ -818,26 +818,26 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl %invariant.gep = getelementptr inbounds nuw [4 x float], ptr %55, i64 0, i64 %indvars.iv158 br label %364 -364: ; preds = %.preheader129, %371 +363: ; preds = %.preheader129, %371 %indvars.iv = phi i64 [ 0, %.preheader129 ], [ %indvars.iv.next, %371 ] %.059139 = phi float [ 0.000000e+00, %.preheader129 ], [ %372, %371 ] %.1138 = phi ptr [ %.061141, %.preheader129 ], [ %370, %371 ] - %365 = call i64 @strtol(ptr noundef nonnull captures(none) %.1138, ptr noundef null, i32 noundef 10) #10 - %366 = trunc i64 %365 to i32 - %367 = sitofp i32 %366 to float - %368 = getelementptr inbounds nuw [4 x float], ptr %363, i64 0, i64 %indvars.iv - store float %367, ptr %368, align 4, !tbaa !111 - %gep = getelementptr inbounds nuw [3 x [4 x float]], ptr %invariant.gep, i64 0, i64 %indvars.iv - %369 = load float, ptr %gep, align 4, !tbaa !111 + %364 = call i64 @strtol(ptr noundef nonnull captures(none) %.1138, ptr noundef null, i32 noundef 10) #10 + %365 = trunc i64 %364 to i32 + %366 = sitofp i32 %365 to float + %367 = getelementptr inbounds nuw [4 x float], ptr %363, i64 0, i64 %indvars.iv + store float %366, ptr %367, align 4, !tbaa !111 + %368 = getelementptr inbounds nuw [3 x [4 x float]], ptr %invariant.gep, i64 0, i64 %indvars.iv + %369 = load float, ptr %368, align 4, !tbaa !111 %370 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.19, ptr noundef nonnull %9) #10 %.not98 = icmp eq ptr %370, null br i1 %.not98, label %.sink.split, label %371 -371: ; preds = %364 +371: ; preds = %363 %372 = fadd reassoc nsz arcp contract afn float %369, %.059139 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %373, label %364, !llvm.loop !113 + br i1 %exitcond.not, label %373, label %363, !llvm.loop !113 373: ; preds = %371 %374 = fpext reassoc nsz arcp contract afn float %372 to double @@ -863,7 +863,7 @@ define void @_ZN6LibRaw10parse_exifEi(ptr noundef nonnull align 8 dereferenceabl %exitcond161.not = icmp eq i64 %indvars.iv.next159, 3 br i1 %exitcond161.not, label %.sink.split, label %.preheader129, !llvm.loop !115 -.sink.split: ; preds = %.loopexit, %364, %356 +.sink.split: ; preds = %.loopexit, %363, %356 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10 br label %380 diff --git a/bench/darktable/optimized/identify_tools.ll b/bench/darktable/optimized/identify_tools.ll index 16e0e6abb27..23a76fd8011 100644 --- a/bench/darktable/optimized/identify_tools.ll +++ b/bench/darktable/optimized/identify_tools.ll @@ -126,7 +126,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a .preheader54.split.us: ; preds = %.preheader54, %._crit_edge.split.us.us %.not.us = phi i1 [ false, %._crit_edge.split.us.us ], [ true, %.preheader54 ] - %indvars.iv87.sroa.phi = phi ptr [ %indvars.iv87.sroa.gep, %._crit_edge.split.us.us ], [ %6, %.preheader54 ] + %indvars.iv87 = phi ptr [ %indvars.iv87.sroa.gep, %._crit_edge.split.us.us ], [ %6, %.preheader54 ] %.04870.us = phi i64 [ %.149.lcssa.us, %._crit_edge.split.us.us ], [ 0, %.preheader54 ] %16 = load ptr, ptr %11, align 8, !tbaa !6 %17 = select i1 %.not.us, i32 %3, i32 %4 @@ -166,7 +166,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %31 = shl i64 %.2.lcssa.us.us, %30 %32 = lshr i64 %31, %15 %33 = trunc i64 %32 to i16 - %34 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv87.sroa.phi, i64 0, i64 %indvars.iv84 + %34 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv87, i64 0, i64 %indvars.iv84 store i16 %33, ptr %34, align 2, !tbaa !80 %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 %35 = zext i16 %28 to i64 @@ -254,7 +254,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a .preheader54.split: ; preds = %.preheader54, %._crit_edge.split %.not = phi i1 [ false, %._crit_edge.split ], [ true, %.preheader54 ] - %indvars.iv81.sroa.phi = phi ptr [ %indvars.iv81.sroa.gep, %._crit_edge.split ], [ %6, %.preheader54 ] + %indvars.iv81 = phi ptr [ %indvars.iv81.sroa.gep, %._crit_edge.split ], [ %6, %.preheader54 ] %.04870 = phi i64 [ %.149.lcssa, %._crit_edge.split ], [ 0, %.preheader54 ] %81 = load ptr, ptr %11, align 8, !tbaa !6 %82 = select i1 %.not, i32 %3, i32 %4 @@ -295,7 +295,7 @@ define noundef float @_ZN6LibRaw10find_greenEiiii(ptr noundef nonnull readonly a %97 = shl i64 %.2.lcssa, %96 %98 = lshr i64 %97, %15 %99 = trunc i64 %98 to i16 - %100 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv81.sroa.phi, i64 0, i64 %indvars.iv + %100 = getelementptr inbounds nuw [2064 x i16], ptr %indvars.iv81, i64 0, i64 %indvars.iv store i16 %99, ptr %100, align 2, !tbaa !80 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count diff --git a/bench/darktable/optimized/libraw_c_api.ll b/bench/darktable/optimized/libraw_c_api.ll index c425d1de104..65d980386da 100644 --- a/bench/darktable/optimized/libraw_c_api.ll +++ b/bench/darktable/optimized/libraw_c_api.ll @@ -972,7 +972,7 @@ define float @libraw_get_pre_mul(ptr noundef readonly captures(address_is_null) ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define float @libraw_get_rgb_cam(ptr noundef readonly captures(address_is_null) %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #8 { %.not = icmp eq ptr %0, null - br i1 %.not, label %15, label %4 + br i1 %.not, label %14, label %4 4: ; preds = %3 %5 = getelementptr inbounds nuw i8, ptr %0, i64 153296 @@ -987,7 +987,7 @@ define float @libraw_get_rgb_cam(ptr noundef readonly captures(address_is_null) %14 = load float, ptr %13, align 4, !tbaa !88 br label %15 -15: ; preds = %3, %4 +14: ; preds = %3, %4 %.0 = phi nsz float [ %14, %4 ], [ 2.200000e+01, %3 ] ret float %.0 } diff --git a/bench/duckdb/optimized/aria.ll b/bench/duckdb/optimized/aria.ll index e8f7589753e..c76bd890641 100644 --- a/bench/duckdb/optimized/aria.ll +++ b/bench/duckdb/optimized/aria.ll @@ -666,25 +666,25 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture %8 = zext i8 %6 to i64 br label %.preheader40 -.preheader40: ; preds = %.preheader40.lr.ph, %17 +.preheader40: ; preds = %.preheader40.lr.ph, %15 %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %17 ] %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %17 ] %9 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47 %10 = getelementptr inbounds [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv49 br label %12 -.preheader: ; preds = %17 +.preheader: ; preds = %15 %.not58 = icmp eq i8 %6, 1 br i1 %.not58, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %.preheader - %11 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 4 %wide.trip.count = zext i8 %6 to i64 - br label %19 + br label %17 -12: ; preds = %.preheader40, %12 +10: ; preds = %.preheader40, %10 %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %12 ] - %13 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv + %11 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv %14 = load i32, ptr %13, align 4, !tbaa !3 %15 = getelementptr inbounds nuw [4 x i32], ptr %10, i64 0, i64 %indvars.iv %16 = load i32, ptr %15, align 4, !tbaa !3 @@ -692,70 +692,70 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture store i32 %14, ptr %15, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %17, label %12, !llvm.loop !13 + br i1 %exitcond.not, label %15, label %10, !llvm.loop !13 -17: ; preds = %12 +15: ; preds = %10 %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 %indvars.iv.next50 = add nsw i64 %indvars.iv49, -1 - %18 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 - br i1 %18, label %.preheader40, label %.preheader, !llvm.loop !14 + %16 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 + br i1 %16, label %.preheader40, label %.preheader, !llvm.loop !14 -19: ; preds = %.lr.ph, %19 +17: ; preds = %.lr.ph, %17 %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %19 ] - %20 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %11, i64 0, i64 %indvars.iv54 - %21 = getelementptr inbounds nuw i8, ptr %20, i64 4 - %22 = getelementptr inbounds nuw i8, ptr %20, i64 8 - %23 = getelementptr inbounds nuw i8, ptr %20, i64 12 - %24 = load i32, ptr %21, align 4, !tbaa !3 - %25 = load i32, ptr %20, align 4, !tbaa !3 - %26 = tail call i32 @llvm.fshl.i32(i32 %24, i32 %24, i32 16) - %27 = load i32, ptr %23, align 4, !tbaa !3 - %28 = load i32, ptr %22, align 4, !tbaa !3 - %29 = lshr i32 %28, 8 - %30 = and i32 %29, 16711935 - %31 = shl i32 %28, 8 - %32 = and i32 %31, -16711936 - %33 = or disjoint i32 %30, %32 - %34 = tail call i32 @llvm.bswap.i32(i32 %27) - %35 = xor i32 %33, %24 - %36 = tail call i32 @llvm.fshl.i32(i32 %25, i32 %25, i32 16) - %37 = lshr i32 %35, 8 - %38 = and i32 %37, 16711935 - %39 = shl i32 %35, 8 - %40 = and i32 %39, -16711936 - %41 = or disjoint i32 %38, %40 - %42 = xor i32 %36, %41 - %43 = xor i32 %42, %34 - %44 = xor i32 %33, %27 - %45 = tail call i32 @llvm.fshl.i32(i32 %44, i32 %44, i32 16) - %46 = tail call i32 @llvm.bswap.i32(i32 %24) - %47 = xor i32 %36, %46 - %48 = xor i32 %45, %25 - %49 = xor i32 %48, %43 - store i32 %49, ptr %21, align 4, !tbaa !3 - %50 = tail call i32 @llvm.fshl.i32(i32 %45, i32 %45, i32 16) - %51 = xor i32 %43, %50 - %52 = lshr i32 %51, 8 - %53 = and i32 %52, 16711935 - %54 = shl i32 %51, 8 - %55 = and i32 %54, -16711936 - %56 = or disjoint i32 %53, %55 - %57 = xor i32 %56, %26 - store i32 %57, ptr %20, align 4, !tbaa !3 - %58 = tail call i32 @llvm.fshl.i32(i32 %43, i32 %43, i32 16) - %59 = tail call i32 @llvm.bswap.i32(i32 %43) - %60 = xor i32 %47, %59 - %61 = xor i32 %60, %33 - store i32 %61, ptr %23, align 4, !tbaa !3 - %62 = tail call i32 @llvm.bswap.i32(i32 %47) - %63 = xor i32 %62, %58 - %64 = xor i32 %63, %34 - store i32 %64, ptr %22, align 4, !tbaa !3 + %18 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv54 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 4 + %20 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %21 = getelementptr inbounds nuw i8, ptr %18, i64 12 + %22 = load i32, ptr %19, align 4, !tbaa !3 + %23 = load i32, ptr %18, align 4, !tbaa !3 + %24 = tail call i32 @llvm.fshl.i32(i32 %22, i32 %22, i32 16) + %25 = load i32, ptr %21, align 4, !tbaa !3 + %26 = load i32, ptr %20, align 4, !tbaa !3 + %27 = lshr i32 %26, 8 + %28 = and i32 %27, 16711935 + %29 = shl i32 %26, 8 + %30 = and i32 %29, -16711936 + %31 = or disjoint i32 %28, %30 + %32 = tail call i32 @llvm.bswap.i32(i32 %25) + %33 = xor i32 %31, %22 + %34 = tail call i32 @llvm.fshl.i32(i32 %23, i32 %23, i32 16) + %35 = lshr i32 %33, 8 + %36 = and i32 %35, 16711935 + %37 = shl i32 %33, 8 + %38 = and i32 %37, -16711936 + %39 = or disjoint i32 %36, %38 + %40 = xor i32 %34, %39 + %41 = xor i32 %40, %32 + %42 = xor i32 %31, %25 + %43 = tail call i32 @llvm.fshl.i32(i32 %42, i32 %42, i32 16) + %44 = tail call i32 @llvm.bswap.i32(i32 %22) + %45 = xor i32 %34, %44 + %46 = xor i32 %43, %23 + %47 = xor i32 %46, %41 + store i32 %47, ptr %19, align 4, !tbaa !3 + %48 = tail call i32 @llvm.fshl.i32(i32 %43, i32 %43, i32 16) + %49 = xor i32 %41, %48 + %50 = lshr i32 %49, 8 + %51 = and i32 %50, 16711935 + %52 = shl i32 %49, 8 + %53 = and i32 %52, -16711936 + %54 = or disjoint i32 %51, %53 + %55 = xor i32 %54, %24 + store i32 %55, ptr %18, align 4, !tbaa !3 + %56 = tail call i32 @llvm.fshl.i32(i32 %41, i32 %41, i32 16) + %57 = tail call i32 @llvm.bswap.i32(i32 %41) + %58 = xor i32 %45, %57 + %59 = xor i32 %58, %31 + store i32 %59, ptr %21, align 4, !tbaa !3 + %60 = tail call i32 @llvm.bswap.i32(i32 %45) + %61 = xor i32 %60, %56 + %62 = xor i32 %61, %32 + store i32 %62, ptr %20, align 4, !tbaa !3 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 %exitcond57.not = icmp eq i64 %indvars.iv.next55, %wide.trip.count - br i1 %exitcond57.not, label %.loopexit, label %19, !llvm.loop !15 + br i1 %exitcond57.not, label %.loopexit, label %17, !llvm.loop !15 -.loopexit: ; preds = %19, %5, %.preheader, %3 +.loopexit: ; preds = %17, %5, %.preheader, %3 %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %19 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/pafvideo.ll b/bench/ffmpeg/optimized/pafvideo.ll index 94d7e3f7025..c712f6f1f9b 100644 --- a/bench/ffmpeg/optimized/pafvideo.ll +++ b/bench/ffmpeg/optimized/pafvideo.ll @@ -942,11 +942,11 @@ bytestream2_get_le16.exit171: ; preds = %191 %.not158231 = icmp eq i8 %245, 0 br i1 %.not158231, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %235, %copy_color_mask.exit - %indvars.iv = phi i64 [ %indvars.iv.next, %copy_color_mask.exit ], [ 0, %235 ] - %246 = phi i8 [ %356, %copy_color_mask.exit ], [ %245, %235 ] - %.3141234 = phi i8 [ %.4142, %copy_color_mask.exit ], [ %.1139240, %235 ] - %.3186233 = phi ptr [ %.4, %copy_color_mask.exit ], [ %.1239, %235 ] +.lr.ph:; preds = %235, %copy_color_mask.exit + %246 = phi i64 [ %indvars.iv.next, %copy_color_mask.exit ], [ 0, %235 ] + %.3141234 = phi i8 [ %356, %copy_color_mask.exit ], [ %245, %235 ] + %.3186233 = phi i8 [ %.4142, %copy_color_mask.exit ], [ %.1139240, %235 ] + %.3190232 = phi ptr [ %.4, %copy_color_mask.exit ], [ %.1239, %235 ] %.3190232 = phi ptr [ %.4191, %copy_color_mask.exit ], [ %.1188238, %235 ] %247 = load i32, ptr %127, align 8, !tbaa !28 %248 = shl nsw i32 %247, 1 diff --git a/bench/ffmpeg/optimized/vf_fftdnoiz.ll b/bench/ffmpeg/optimized/vf_fftdnoiz.ll index 8c30e17957b..bf9360ace06 100644 --- a/bench/ffmpeg/optimized/vf_fftdnoiz.ll +++ b/bench/ffmpeg/optimized/vf_fftdnoiz.ll @@ -1507,7 +1507,7 @@ generate_window_func.exit: ; preds = %600, %580, %578, %5 %618 = getelementptr inbounds nuw [256 x [256 x float]], ptr %615, i64 0, i64 %indvars.iv263 br label %619 -619: ; preds = %.preheader.us, %619 +619: ; preds = %.preheader.us, %619 %indvars.iv260 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next261, %619 ] %620 = getelementptr inbounds nuw [257 x float], ptr %2, i64 0, i64 %indvars.iv260 %621 = load float, ptr %620, align 4, !tbaa !68 diff --git a/bench/flac/optimized/lpc.ll b/bench/flac/optimized/lpc.ll index 8001d0aa2c3..74b5c877bce 100644 --- a/bench/flac/optimized/lpc.ll +++ b/bench/flac/optimized/lpc.ll @@ -537,10 +537,10 @@ define hidden void @FLAC__lpc_compute_lp_coefficients(ptr noundef readonly captu %wide.trip.count80 = zext i32 %7 to i64 br label %8 -8: ; preds = %50, %4 +8: ; preds = %49, %4 %indvars.iv77 = phi i64 [ %indvars.iv.next78, %50 ], [ 0, %4 ] %indvars.iv73 = phi i32 [ %indvars.iv.next74, %50 ], [ 1, %4 ] - %.049 = phi nsz double [ %53, %50 ], [ %6, %4 ] + %.049 = phi nsz double [ %52, %50 ], [ %6, %4 ] %umax = tail call i32 @llvm.umax.i32(i32 %indvars.iv73, i32 1) %exitcond81.not = icmp eq i64 %indvars.iv77, %wide.trip.count80 br i1 %exitcond81.not, label %.loopexit, label %9 @@ -620,36 +620,36 @@ define hidden void @FLAC__lpc_compute_lp_coefficients(ptr noundef readonly captu %42 = phi double [ %13, %._crit_edge59.thread ], [ %22, %._crit_edge59.thread86 ], [ %22, %._crit_edge59 ] %43 = getelementptr inbounds nuw [32 x float], ptr %2, i64 %indvars.iv77 %wide.trip.count75 = zext i32 %umax to i64 - br label %44 + br label %43 -44: ; preds = %41, %44 +43: ; preds = %41, %43 %indvars.iv70 = phi i64 [ 0, %41 ], [ %indvars.iv.next71, %44 ] - %45 = getelementptr inbounds nuw [32 x double], ptr %5, i64 0, i64 %indvars.iv70 - %46 = load double, ptr %45, align 8, !tbaa !18 - %47 = fptrunc reassoc nsz arcp double %46 to float - %48 = fneg reassoc nsz arcp float %47 - %49 = getelementptr inbounds nuw [32 x float], ptr %43, i64 0, i64 %indvars.iv70 - store float %48, ptr %49, align 4, !tbaa !7 + %44 = getelementptr inbounds nuw [32 x double], ptr %5, i64 0, i64 %indvars.iv70 + %45 = load double, ptr %44, align 8, !tbaa !18 + %46 = fptrunc reassoc nsz arcp double %45 to float + %47 = fneg reassoc nsz arcp float %46 + %48 = getelementptr inbounds nuw [32 x float], ptr %43, i64 0, i64 %indvars.iv70 + store float %47, ptr %48, align 4, !tbaa !7 %indvars.iv.next71 = add nuw nsw i64 %indvars.iv70, 1 %exitcond76 = icmp eq i64 %indvars.iv.next71, %wide.trip.count75 - br i1 %exitcond76, label %50, label %44, !llvm.loop !38 - -50: ; preds = %44 - %51 = fneg reassoc nsz arcp double %42 - %52 = tail call reassoc nsz arcp double @llvm.fmuladd.f64(double %51, double %42, double 1.000000e+00) - %53 = fmul reassoc nsz arcp double %52, %.049 - %54 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv77 - store double %53, ptr %54, align 8, !tbaa !18 - %55 = fcmp reassoc nsz arcp oeq double %53, 0.000000e+00 + br i1 %exitcond76, label %49, label %43, !llvm.loop !38 + +49: ; preds = %43 + %50 = fneg reassoc nsz arcp double %42 + %51 = tail call reassoc nsz arcp double @llvm.fmuladd.f64(double %50, double %42, double 1.000000e+00) + %52 = fmul reassoc nsz arcp double %51, %.049 + %53 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv77 + store double %52, ptr %53, align 8, !tbaa !18 + %54 = fcmp reassoc nsz arcp oeq double %52, 0.000000e+00 %indvars.iv.next74 = add i32 %indvars.iv73, 1 - br i1 %55, label %56, label %8, !llvm.loop !39 + br i1 %54, label %55, label %8, !llvm.loop !39 -56: ; preds = %50 - %57 = trunc nuw i64 %indvars.iv.next78 to i32 - store i32 %57, ptr %1, align 4, !tbaa !3 +55: ; preds = %49 + %56 = trunc nuw i64 %indvars.iv.next78 to i32 + store i32 %56, ptr %1, align 4, !tbaa !3 br label %.loopexit -.loopexit: ; preds = %8, %56 +.loopexit: ; preds = %8, %55 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #13 ret void } diff --git a/bench/freetype/optimized/truetype.ll b/bench/freetype/optimized/truetype.ll index 0f82a44abb5..91b61e395fa 100644 --- a/bench/freetype/optimized/truetype.ll +++ b/bench/freetype/optimized/truetype.ll @@ -21589,7 +21589,7 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 br i1 %exitcond75.not.i, label %tt_check_trickyness_family.exit.sink.split, label %.preheader.split.us.i, !llvm.loop !807 63: ; preds = %.loopexit51.i, %.lr.ph.i - %64 = phi i16 [ %54, %.lr.ph.i ], [ %134, %.loopexit51.i ] + %64 = phi i16 [ %54, %.lr.ph.i ], [ %135, %.loopexit51.i ] %indvars.iv70.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next71.i, %.loopexit51.i ] %.03859.i = phi i8 [ 0, %.lr.ph.i ], [ %.240.i, %.loopexit51.i ] %65 = load ptr, ptr %55, align 8, !tbaa !808 @@ -21613,166 +21613,166 @@ tt_check_trickyness_family.exit.thread: ; preds = %49, %3 %invariant.gep.i = getelementptr inbounds nuw [3 x %struct.tt_sfnt_id_rec_], ptr @tt_check_trickyness_sfnt_ids.sfnt_id, i64 0, i64 %.0.i9 br label %71 -71: ; preds = %133, %70 +71: ; preds = %134, %70 %indvars.iv.i10 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i11, %133 ] %.04157.i = phi i64 [ 0, %70 ], [ %.243.i, %133 ] %72 = load ptr, ptr %55, align 8, !tbaa !808 %73 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i, i32 3 %74 = load i64, ptr %73, align 8, !tbaa !811 - %gep.i = getelementptr inbounds nuw [31 x [3 x %struct.tt_sfnt_id_rec_]], ptr %invariant.gep.i, i64 0, i64 %indvars.iv.i10 - %75 = getelementptr inbounds nuw i8, ptr %gep.i, i64 8 - %76 = load i64, ptr %75, align 8, !tbaa !812 - %77 = icmp eq i64 %74, %76 - br i1 %77, label %78, label %133 + %75 = getelementptr inbounds nuw [31 x [3 x %struct.tt_sfnt_id_rec_]], ptr %invariant.gep.i, i64 0, i64 %indvars.iv.i10 + %76 = getelementptr inbounds nuw i8, ptr %75, i64 8 + %77 = load i64, ptr %76, align 8, !tbaa !812 + %78 = icmp eq i64 %74, %77 + br i1 %78, label %79, label %134 -78: ; preds = %71 +79: ; preds = %71 %.not50.i = icmp eq i64 %.04157.i, 0 - br i1 %.not50.i, label %79, label %tt_get_sfnt_checksum.exit.i - -79: ; preds = %78 - %80 = load ptr, ptr %56, align 8, !tbaa !453 - %.not.i.i13 = icmp eq ptr %80, null - br i1 %.not.i.i13, label %tt_get_sfnt_checksum.exit.i, label %81 - -81: ; preds = %79 - %82 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i - %83 = load i64, ptr %82, align 8, !tbaa !809 - %84 = load ptr, ptr %57, align 8, !tbaa !44 - %85 = tail call i32 %80(ptr noundef nonnull %0, i64 noundef %83, ptr noundef %84, ptr noundef null) #22 - %.not10.i.i = icmp eq i32 %85, 0 - br i1 %.not10.i.i, label %86, label %tt_get_sfnt_checksum.exit.i - -86: ; preds = %81 - %87 = load ptr, ptr %57, align 8, !tbaa !44 - %88 = load ptr, ptr %55, align 8, !tbaa !808 - %89 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %88, i64 %indvars.iv70.i, i32 3 - %90 = load i64, ptr %89, align 8, !tbaa !811 - %91 = tail call i32 @FT_Stream_EnterFrame(ptr noundef %87, i64 noundef %90) #22 - %.not.i.i.i = icmp eq i32 %91, 0 - br i1 %.not.i.i.i, label %92, label %tt_get_sfnt_checksum.exit.i - -92: ; preds = %86 - %93 = getelementptr inbounds nuw i8, ptr %87, i64 64 - %94 = load ptr, ptr %93, align 8, !tbaa !596 - %95 = icmp ugt i64 %90, 3 - br i1 %95, label %.lr.ph.i.i.i, label %.preheader.i.i.i - -.preheader.i.i.i: ; preds = %.lr.ph.i.i.i, %92 - %.023.lcssa.i.i.i = phi i64 [ %90, %92 ], [ %115, %.lr.ph.i.i.i ] - %.020.lcssa.i.i.i = phi i32 [ 0, %92 ], [ %114, %.lr.ph.i.i.i ] - %.019.lcssa.i.i.i = phi ptr [ %94, %92 ], [ %96, %.lr.ph.i.i.i ] + br i1 %.not50.i, label %80, label %tt_get_sfnt_checksum.exit.i + +80: ; preds = %79 + %81 = load ptr, ptr %56, align 8, !tbaa !453 + %.not.i.i13 = icmp eq ptr %81, null + br i1 %.not.i.i13, label %tt_get_sfnt_checksum.exit.i, label %82 + +82: ; preds = %80 + %83 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %72, i64 %indvars.iv70.i + %84 = load i64, ptr %83, align 8, !tbaa !809 + %85 = load ptr, ptr %57, align 8, !tbaa !44 + %86 = tail call i32 %80(ptr noundef nonnull %0, i64 noundef %84, ptr noundef %85, ptr noundef null) #22 + %.not10.i.i = icmp eq i32 %86, 0 + br i1 %.not10.i.i, label %87, label %tt_get_sfnt_checksum.exit.i + +87: ; preds = %82 + %88 = load ptr, ptr %57, align 8, !tbaa !44 + %89 = load ptr, ptr %55, align 8, !tbaa !808 + %90 = getelementptr inbounds nuw %struct.TT_TableRec_, ptr %89, i64 %indvars.iv70.i, i32 3 + %91 = load i64, ptr %90, align 8, !tbaa !811 + %92 = tail call i32 @FT_Stream_EnterFrame(ptr noundef %88, i64 noundef %91) #22 + %.not.i.i.i = icmp eq i32 %92, 0 + br i1 %.not.i.i.i, label %93, label %tt_get_sfnt_checksum.exit.i + +93: ; preds = %87 + %94 = getelementptr inbounds nuw i8, ptr %88, i64 64 + %95 = load ptr, ptr %94, align 8, !tbaa !596 + %96 = icmp ugt i64 %91, 3 + br i1 %96, label %.lr.ph.i.i.i, label %.preheader.i.i.i + +.preheader.i.i.i: ; preds = %.lr.ph.i.i.i, %93 + %.023.lcssa.i.i.i = phi i64 [ %91, %92 ], [ %116, %.lr.ph.i.i.i ] + %.020.lcssa.i.i.i = phi i32 [ 0, %92 ], [ %115, %.lr.ph.i.i.i ] + %.019.lcssa.i.i.i = phi ptr [ %95, %92 ], [ %97, %.lr.ph.i.i.i ] %.not2531.i.i.i = icmp eq i64 %.023.lcssa.i.i.i, 0 br i1 %.not2531.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph36.i.i.i -.lr.ph.i.i.i: ; preds = %92, %.lr.ph.i.i.i - %.01928.i.i.i = phi ptr [ %96, %.lr.ph.i.i.i ], [ %94, %92 ] - %.02027.i.i.i = phi i32 [ %114, %.lr.ph.i.i.i ], [ 0, %92 ] - %.02326.i.i.i = phi i64 [ %115, %.lr.ph.i.i.i ], [ %90, %92 ] - %96 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 4 - %97 = load i8, ptr %.01928.i.i.i, align 1, !tbaa !224 - %98 = zext i8 %97 to i32 - %99 = shl nuw i32 %98, 24 - %100 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 1 - %101 = load i8, ptr %100, align 1, !tbaa !224 - %102 = zext i8 %101 to i32 - %103 = shl nuw nsw i32 %102, 16 - %104 = or disjoint i32 %103, %99 - %105 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 2 - %106 = load i8, ptr %105, align 1, !tbaa !224 - %107 = zext i8 %106 to i32 - %108 = shl nuw nsw i32 %107, 8 - %109 = or disjoint i32 %104, %108 - %110 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 3 - %111 = load i8, ptr %110, align 1, !tbaa !224 - %112 = zext i8 %111 to i32 - %113 = or disjoint i32 %109, %112 - %114 = add i32 %113, %.02027.i.i.i - %115 = add i64 %.02326.i.i.i, -4 - %116 = icmp ugt i64 %115, 3 - br i1 %116, label %.lr.ph.i.i.i, label %.preheader.i.i.i, !llvm.loop !814 +.lr.ph.i.i.i: ; preds = %93, %.lr.ph.i.i.i + %.01928.i.i.i = phi ptr [ %97, %.lr.ph.i.i.i ], [ %95, %92 ] + %.02027.i.i.i = phi i32 [ %115, %.lr.ph.i.i.i ], [ 0, %92 ] + %.02326.i.i.i = phi i64 [ %116, %.lr.ph.i.i.i ], [ %91, %92 ] + %97 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 4 + %98 = load i8, ptr %.01928.i.i.i, align 1, !tbaa !224 + %99 = zext i8 %98 to i32 + %100 = shl nuw i32 %99, 24 + %101 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 1 + %102 = load i8, ptr %101, align 1, !tbaa !224 + %103 = zext i8 %102 to i32 + %104 = shl nuw nsw i32 %103, 16 + %105 = or disjoint i32 %104, %100 + %106 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 2 + %107 = load i8, ptr %106, align 1, !tbaa !224 + %108 = zext i8 %107 to i32 + %109 = shl nuw nsw i32 %108, 8 + %110 = or disjoint i32 %105, %109 + %111 = getelementptr inbounds nuw i8, ptr %.01928.i.i.i, i64 3 + %112 = load i8, ptr %111, align 1, !tbaa !224 + %113 = zext i8 %112 to i32 + %114 = or disjoint i32 %110, %113 + %115 = add i32 %114, %.02027.i.i.i + %116 = add i64 %.02326.i.i.i, -4 + %117 = icmp ugt i64 %116, 3 + br i1 %117, label %.lr.ph.i.i.i, label %.preheader.i.i.i, !llvm.loop !814 .lr.ph36.i.i.i: ; preds = %.preheader.i.i.i, %.lr.ph36.i.i.i - %.035.i.i.i = phi i32 [ %123, %.lr.ph36.i.i.i ], [ 24, %.preheader.i.i.i ] - %.134.i.i.i = phi ptr [ %117, %.lr.ph36.i.i.i ], [ %.019.lcssa.i.i.i, %.preheader.i.i.i ] - %.12133.i.i.i = phi i32 [ %121, %.lr.ph36.i.i.i ], [ %.020.lcssa.i.i.i, %.preheader.i.i.i ] - %.12432.i.i.i = phi i64 [ %122, %.lr.ph36.i.i.i ], [ %.023.lcssa.i.i.i, %.preheader.i.i.i ] - %117 = getelementptr inbounds nuw i8, ptr %.134.i.i.i, i64 1 - %118 = load i8, ptr %.134.i.i.i, align 1, !tbaa !224 - %119 = zext i8 %118 to i32 - %120 = shl i32 %119, %.035.i.i.i - %121 = add i32 %120, %.12133.i.i.i - %122 = add nsw i64 %.12432.i.i.i, -1 - %123 = add nsw i32 %.035.i.i.i, -8 - %.not25.i.i.i = icmp eq i64 %122, 0 + %.035.i.i.i = phi i32 [ %124, %.lr.ph36.i.i.i ], [ 24, %.preheader.i.i.i ] + %.134.i.i.i = phi ptr [ %118, %.lr.ph36.i.i.i ], [ %.019.lcssa.i.i.i, %.preheader.i.i.i ] + %.12133.i.i.i = phi i32 [ %122, %.lr.ph36.i.i.i ], [ %.020.lcssa.i.i.i, %.preheader.i.i.i ] + %.12432.i.i.i = phi i64 [ %123, %.lr.ph36.i.i.i ], [ %.023.lcssa.i.i.i, %.preheader.i.i.i ] + %118 = getelementptr inbounds nuw i8, ptr %.134.i.i.i, i64 1 + %119 = load i8, ptr %.134.i.i.i, align 1, !tbaa !224 + %120 = zext i8 %119 to i32 + %121 = shl i32 %120, %.035.i.i.i + %122 = add i32 %121, %.12133.i.i.i + %123 = add nsw i64 %.12432.i.i.i, -1 + %124 = add nsw i32 %.035.i.i.i, -8 + %.not25.i.i.i = icmp eq i64 %123, 0 br i1 %.not25.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph36.i.i.i, !llvm.loop !815 ._crit_edge.i.i.i: ; preds = %.lr.ph36.i.i.i, %.preheader.i.i.i - %.121.lcssa.i.i.i = phi i32 [ %.020.lcssa.i.i.i, %.preheader.i.i.i ], [ %121, %.lr.ph36.i.i.i ] - tail call void @FT_Stream_ExitFrame(ptr noundef nonnull %87) #22 - %124 = zext i32 %.121.lcssa.i.i.i to i64 + %.121.lcssa.i.i.i = phi i32 [ %.020.lcssa.i.i.i, %.preheader.i.i.i ], [ %122, %.lr.ph36.i.i.i ] + tail call void @FT_Stream_ExitFrame(ptr noundef nonnull %88) #22 + %125 = zext i32 %.121.lcssa.i.i.i to i64 br label %tt_get_sfnt_checksum.exit.i -tt_get_sfnt_checksum.exit.i: ; preds = %._crit_edge.i.i.i, %86, %81, %79, %78 - %.142.i = phi i64 [ %.04157.i, %78 ], [ 0, %79 ], [ 0, %81 ], [ %124, %._crit_edge.i.i.i ], [ 0, %86 ] - %125 = load i64, ptr %gep.i, align 16, !tbaa !816 - %126 = icmp eq i64 %125, %.142.i - %127 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv.i10 - %128 = load i32, ptr %127, align 4, !tbaa !204 - br i1 %126, label %129, label %tt_get_sfnt_checksum.exit._crit_edge.i - -129: ; preds = %tt_get_sfnt_checksum.exit.i - %130 = add nsw i32 %128, 1 - store i32 %130, ptr %127, align 4, !tbaa !204 +tt_get_sfnt_checksum.exit.i: ; preds = %._crit_edge.i.i.i, %87, %82, %80, %79 + %.142.i = phi i64 [ %.04157.i, %78 ], [ 0, %79 ], [ 0, %81 ], [ %125, %._crit_edge.i.i.i ], [ 0, %86 ] + %126 = load i64, ptr %75, align 16, !tbaa !816 + %127 = icmp eq i64 %126, %.142.i + %128 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv.i10 + %129 = load i32, ptr %128, align 4, !tbaa !204 + br i1 %127, label %130, label %tt_get_sfnt_checksum.exit._crit_edge.i + +130: ; preds = %tt_get_sfnt_checksum.exit.i + %131 = add nsw i32 %129, 1 + store i32 %131, ptr %128, align 4, !tbaa !204 br label %tt_get_sfnt_checksum.exit._crit_edge.i -tt_get_sfnt_checksum.exit._crit_edge.i: ; preds = %129, %tt_get_sfnt_checksum.exit.i - %131 = phi i32 [ %130, %129 ], [ %128, %tt_get_sfnt_checksum.exit.i ] - %132 = icmp eq i32 %131, 3 - br i1 %132, label %tt_check_trickyness_family.exit.sink.split, label %133 +tt_get_sfnt_checksum.exit._crit_edge.i: ; preds = %130, %tt_get_sfnt_checksum.exit.i + %132 = phi i32 [ %131, %129 ], [ %129, %tt_get_sfnt_checksum.exit.i ] + %133 = icmp eq i32 %132, 3 + br i1 %133, label %tt_check_trickyness_family.exit.sink.split, label %134 -133: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %71 +134: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %71 %.243.i = phi i64 [ %.142.i, %tt_get_sfnt_checksum.exit._crit_edge.i ], [ %.04157.i, %71 ] %indvars.iv.next.i11 = add nuw nsw i64 %indvars.iv.i10, 1 %exitcond.not.i12 = icmp eq i64 %indvars.iv.next.i11, 31 br i1 %exitcond.not.i12, label %.loopexit51.loopexit.i, label %71, !llvm.loop !817 -.loopexit51.loopexit.i: ; preds = %133 +.loopexit51.loopexit.i: ; preds = %134 %.pre80.i = load i16, ptr %53, align 8, !tbaa !806 br label %.loopexit51.i .loopexit51.i: ; preds = %.loopexit51.loopexit.i, %63 - %134 = phi i16 [ %64, %63 ], [ %.pre80.i, %.loopexit51.loopexit.i ] + %135 = phi i16 [ %64, %63 ], [ %.pre80.i, %.loopexit51.loopexit.i ] %.240.i = phi i8 [ %.03859.i, %63 ], [ %.139.i, %.loopexit51.loopexit.i ] %indvars.iv.next71.i = add nuw nsw i64 %indvars.iv70.i, 1 - %135 = zext i16 %134 to i64 - %136 = icmp samesign ult i64 %indvars.iv.next71.i, %135 - br i1 %136, label %63, label %.preheader.i, !llvm.loop !818 + %136 = zext i16 %135 to i64 + %137 = icmp samesign ult i64 %indvars.iv.next71.i, %136 + br i1 %137, label %63, label %.preheader.i, !llvm.loop !818 -137: ; preds = %.preheader.split._crit_edge.i +138: ; preds = %.preheader.split._crit_edge.i %indvars.iv.next77.i = add nuw nsw i64 %indvars.iv76.i, 1 %exitcond79.not.i = icmp eq i64 %indvars.iv.next77.i, 31 br i1 %exitcond79.not.i, label %tt_check_trickyness_family.exit.sink.split, label %.preheader.split.i, !llvm.loop !807 -.preheader.split.i: ; preds = %.preheader.split.i.preheader, %137 +.preheader.split.i: ; preds = %.preheader.split.i.preheader, %138 %indvars.iv76.i = phi i64 [ %indvars.iv.next77.i, %137 ], [ 0, %.preheader.split.i.preheader ] - %138 = trunc i64 %indvars.iv76.i to i32 - %139 = add i32 %138, -16 - %.not45.i = icmp ult i32 %139, 12 - %140 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv76.i - %141 = load i32, ptr %140, align 4, !tbaa !204 - br i1 %.not45.i, label %142, label %.preheader.split._crit_edge.i - -142: ; preds = %.preheader.split.i - %143 = add nsw i32 %141, 1 - store i32 %143, ptr %140, align 4, !tbaa !204 + %139 = trunc i64 %indvars.iv76.i to i32 + %140 = add i32 %139, -16 + %.not45.i = icmp ult i32 %140, 12 + %141 = getelementptr inbounds nuw [31 x i32], ptr %2, i64 0, i64 %indvars.iv76.i + %142 = load i32, ptr %141, align 4, !tbaa !204 + br i1 %.not45.i, label %143, label %.preheader.split._crit_edge.i + +143: ; preds = %.preheader.split.i + %144 = add nsw i32 %142, 1 + store i32 %144, ptr %141, align 4, !tbaa !204 br label %.preheader.split._crit_edge.i -.preheader.split._crit_edge.i: ; preds = %142, %.preheader.split.i - %144 = phi i32 [ %143, %142 ], [ %141, %.preheader.split.i ] - %145 = icmp eq i32 %144, 3 - br i1 %145, label %tt_check_trickyness_family.exit.sink.split, label %137 +.preheader.split._crit_edge.i: ; preds = %143, %.preheader.split.i + %145 = phi i32 [ %144, %142 ], [ %142, %.preheader.split.i ] + %146 = icmp eq i32 %145, 3 + br i1 %146, label %tt_check_trickyness_family.exit.sink.split, label %138 -tt_check_trickyness_family.exit.sink.split: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %62, %.preheader.split.us.i, %137, %.preheader.split._crit_edge.i +tt_check_trickyness_family.exit.sink.split: ; preds = %tt_get_sfnt_checksum.exit._crit_edge.i, %62, %.preheader.split.us.i, %138, %.preheader.split._crit_edge.i %.0.ph = phi i8 [ 1, %.preheader.split._crit_edge.i ], [ 0, %137 ], [ 1, %.preheader.split.us.i ], [ 0, %62 ], [ 1, %tt_get_sfnt_checksum.exit._crit_edge.i ] call void @llvm.lifetime.end.p0(i64 124, ptr nonnull %2) #22 br label %tt_check_trickyness_family.exit diff --git a/bench/graphviz/optimized/mincross.ll b/bench/graphviz/optimized/mincross.ll index ccbbd6c2ea8..23ce72e0836 100644 --- a/bench/graphviz/optimized/mincross.ll +++ b/bench/graphviz/optimized/mincross.ll @@ -5099,7 +5099,7 @@ endpoint_class.exit: ; preds = %1, %12 %25 = icmp eq i8 %24, 1 br i1 %25, label %endpoint_class.exit13, label %26 -26: ; preds = %endpoint_class.exit +26: ; preds = %endpoint_class.exit %27 = getelementptr inbounds nuw i8, ptr %.val10, i64 234 %28 = load i8, ptr %27, align 2, !tbaa !201 %29 = icmp slt i8 %28, 2 @@ -5108,24 +5108,24 @@ endpoint_class.exit: ; preds = %1, %12 endpoint_class.exit13: ; preds = %endpoint_class.exit, %26 %.0.i12 = phi i64 [ 2, %endpoint_class.exit ], [ %30, %26 ] - %31 = getelementptr inbounds nuw [3 x i32], ptr %17, i64 0, i64 %.0.i12 - %32 = load i32, ptr %31, align 4, !tbaa !67 - %33 = sdiv i32 2147483647, %32 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %35 = load ptr, ptr %34, align 8, !tbaa !3 - %36 = getelementptr inbounds nuw i8, ptr %35, i64 212 - %37 = load i32, ptr %36, align 4, !tbaa !202 - %38 = icmp slt i32 %33, %37 - br i1 %38, label %39, label %40 + %30 = getelementptr inbounds nuw [3 x i32], ptr %17, i64 0, i64 %.0.i12 + %31 = load i32, ptr %30, align 4, !tbaa !67 + %32 = sdiv i32 2147483647, %31 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %34 = load ptr, ptr %33, align 8, !tbaa !3 + %35 = getelementptr inbounds nuw i8, ptr %34, i64 212 + %36 = load i32, ptr %35, align 4, !tbaa !202 + %37 = icmp slt i32 %32, %36 + br i1 %37, label %38, label %39 -39: ; preds = %endpoint_class.exit13 +38: ; preds = %endpoint_class.exit13 tail call void (ptr, ...) @agerrorf(ptr noundef nonnull @.str.9) #23 tail call fastcc void @graphviz_exit() #26 unreachable -40: ; preds = %endpoint_class.exit13 - %41 = mul nsw i32 %37, %32 - store i32 %41, ptr %36, align 4, !tbaa !202 +39: ; preds = %endpoint_class.exit13 + %40 = mul nsw i32 %36, %31 + store i32 %40, ptr %35, align 4, !tbaa !202 ret void } diff --git a/bench/gromacs/optimized/boxdeformation.ll b/bench/gromacs/optimized/boxdeformation.ll index 85dbb5ae19a..7aa8ec8f52d 100644 --- a/bench/gromacs/optimized/boxdeformation.ll +++ b/bench/gromacs/optimized/boxdeformation.ll @@ -876,24 +876,24 @@ declare float @llvm.fmuladd.f32(float, float, float) #17 define void @_ZN3gmx27setBoxDeformationFlowMatrixEPA3_KfS2_PA3_f(ptr noundef readonly captures(none) %0, ptr noundef readonly captures(none) %1, ptr noundef writeonly captures(none) %2) local_unnamed_addr #18 { br label %.preheader -.preheader: ; preds = %3, %6 +.preheader: ; preds = %3, %5 %indvars.iv16 = phi i64 [ 0, %3 ], [ %indvars.iv.next17, %6 ] %invariant.gep = getelementptr inbounds nuw [3 x float], ptr %0, i64 0, i64 %indvars.iv16 %4 = getelementptr inbounds nuw [3 x float], ptr %2, i64 %indvars.iv16 br label %7 -5: ; preds = %6 +4: ; preds = %5 ret void -6: ; preds = %7 +5: ; preds = %6 %indvars.iv.next17 = add nuw nsw i64 %indvars.iv16, 1 %exitcond19.not = icmp eq i64 %indvars.iv.next17, 3 - br i1 %exitcond19.not, label %5, label %.preheader, !llvm.loop !173 + br i1 %exitcond19.not, label %4, label %.preheader, !llvm.loop !173 -7: ; preds = %.preheader, %7 +6: ; preds = %.preheader, %6 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %7 ] - %gep = getelementptr inbounds nuw [3 x float], ptr %invariant.gep, i64 %indvars.iv - %8 = load float, ptr %gep, align 4, !tbaa !125 + %7 = getelementptr inbounds nuw [3 x float], ptr %invariant.gep, i64 %indvars.iv + %8 = load float, ptr %7, align 4, !tbaa !125 %9 = getelementptr inbounds nuw [3 x float], ptr %1, i64 %indvars.iv %10 = getelementptr inbounds nuw [3 x float], ptr %9, i64 0, i64 %indvars.iv %11 = load float, ptr %10, align 4, !tbaa !125 @@ -902,7 +902,7 @@ define void @_ZN3gmx27setBoxDeformationFlowMatrixEPA3_KfS2_PA3_f(ptr noundef rea store float %12, ptr %13, align 4, !tbaa !125 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %6, label %7, !llvm.loop !174 + br i1 %exitcond.not, label %5, label %6, !llvm.loop !174 } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) diff --git a/bench/gromacs/optimized/hxprops.ll b/bench/gromacs/optimized/hxprops.ll index acd3da362fb..e2f22858a4d 100644 --- a/bench/gromacs/optimized/hxprops.ll +++ b/bench/gromacs/optimized/hxprops.ll @@ -384,7 +384,7 @@ define noundef float @_Z3dipiPKiPA3_KfPK6t_atom(i32 noundef %0, ptr noundef read %wide.trip.count = zext nneg i32 %0 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %21 +.lr.ph: ; preds = %.lr.ph.preheader, %20 %indvars.iv17 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next18, %21 ] %9 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv17 %10 = load i32, ptr %9, align 4, !tbaa !20 @@ -394,37 +394,37 @@ define noundef float @_Z3dipiPKiPA3_KfPK6t_atom(i32 noundef %0, ptr noundef read %14 = getelementptr inbounds [3 x float], ptr %2, i64 %11 br label %15 -15: ; preds = %.lr.ph, %15 +14: ; preds = %.lr.ph, %14 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %15 ] - %16 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv - %17 = load float, ptr %16, align 4, !tbaa !21 - %18 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv - %19 = load float, ptr %18, align 4, !tbaa !21 - %20 = tail call float @llvm.fmuladd.f32(float %17, float %13, float %19) - store float %20, ptr %18, align 4, !tbaa !21 + %15 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv + %16 = load float, ptr %15, align 4, !tbaa !21 + %17 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv + %18 = load float, ptr %17, align 4, !tbaa !21 + %19 = tail call float @llvm.fmuladd.f32(float %16, float %13, float %18) + store float %19, ptr %17, align 4, !tbaa !21 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %21, label %15, !llvm.loop !29 + br i1 %exitcond.not, label %20, label %14, !llvm.loop !29 -21: ; preds = %15 +20: ; preds = %14 %indvars.iv.next18 = add nuw nsw i64 %indvars.iv17, 1 %exitcond20.not = icmp eq i64 %indvars.iv.next18, %wide.trip.count br i1 %exitcond20.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !30 -._crit_edge.loopexit: ; preds = %21 +._crit_edge.loopexit: ; preds = %20 %.pre = load float, ptr %5, align 4, !tbaa !21 %.pre21 = load float, ptr %6, align 4, !tbaa !21 %.pre22 = load float, ptr %7, align 4, !tbaa !21 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %4 - %22 = phi float [ %.pre22, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] - %23 = phi float [ %.pre21, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] - %24 = phi float [ %.pre, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] - %25 = fmul float %23, %23 - %26 = tail call float @llvm.fmuladd.f32(float %24, float %24, float %25) - %27 = tail call noundef float @llvm.fmuladd.f32(float %22, float %22, float %26) - %sqrt.i = tail call noundef float @llvm.sqrt.f32(float %27) + %21 = phi float [ %.pre22, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] + %22 = phi float [ %.pre21, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] + %23 = phi float [ %.pre, %._crit_edge.loopexit ], [ 0.000000e+00, %4 ] + %24 = fmul float %22, %22 + %25 = tail call float @llvm.fmuladd.f32(float %23, float %23, float %24) + %26 = tail call noundef float @llvm.fmuladd.f32(float %21, float %21, float %25) + %sqrt.i = tail call noundef float @llvm.sqrt.f32(float %26) call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #21 ret float %sqrt.i } diff --git a/bench/gromacs/optimized/sm_simple.ll b/bench/gromacs/optimized/sm_simple.ll index 9e72bee7130..31f9a7f788a 100644 --- a/bench/gromacs/optimized/sm_simple.ll +++ b/bench/gromacs/optimized/sm_simple.ll @@ -2177,10 +2177,10 @@ define internal void @_ZL10evaluate_xRKN3gmx20SelMethodEvalContextEP13gmx_ana_po 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %gep.i = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i - %13 = load float, ptr %gep.i, align 4, !tbaa !173 - %14 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i - store float %13, ptr %14, align 4, !tbaa !173 + %13 = getelementptr inbounds nuw [3 x float], ptr %11, i64 %indvars.iv.i + %14 = load float, ptr %13, align 4, !tbaa !173 + %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i + store float %14, ptr %15, align 4, !tbaa !173 %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 %_ZL14evaluate_coordPfP13gmx_ana_pos_ti.exit, label %12, !llvm.loop !192 @@ -2208,10 +2208,10 @@ define internal void @_ZL10evaluate_yRKN3gmx20SelMethodEvalContextEP13gmx_ana_po 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %gep.i = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i - %13 = load float, ptr %gep.i, align 4, !tbaa !173 - %14 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i - store float %13, ptr %14, align 4, !tbaa !173 + %13 = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i + %14 = load float, ptr %13, align 4, !tbaa !173 + %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i + store float %14, ptr %15, align 4, !tbaa !173 %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 %_ZL14evaluate_coordPfP13gmx_ana_pos_ti.exit, label %12, !llvm.loop !192 @@ -2239,10 +2239,10 @@ define internal void @_ZL10evaluate_zRKN3gmx20SelMethodEvalContextEP13gmx_ana_po 12: ; preds = %12, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %12 ] - %gep.i = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i - %13 = load float, ptr %gep.i, align 4, !tbaa !173 - %14 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i - store float %13, ptr %14, align 4, !tbaa !173 + %13 = getelementptr inbounds nuw [3 x float], ptr %invariant.gep.i, i64 %indvars.iv.i + %14 = load float, ptr %13, align 4, !tbaa !173 + %15 = getelementptr inbounds nuw float, ptr %9, i64 %indvars.iv.i + store float %14, ptr %15, align 4, !tbaa !173 %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 %_ZL14evaluate_coordPfP13gmx_ana_pos_ti.exit, label %12, !llvm.loop !192 diff --git a/bench/grpc/optimized/executor.ll b/bench/grpc/optimized/executor.ll index dca7ae563fc..00335c9373b 100644 --- a/bench/grpc/optimized/executor.ll +++ b/bench/grpc/optimized/executor.ll @@ -2275,16 +2275,16 @@ define void @_ZN9grpc_core8Executor3RunEP12grpc_closureN4absl12lts_202407226Stat %.not.i.i = icmp eq i64 %12, 0 br i1 %.not.i.i, label %13, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit -13: ; preds = %4 +13:; preds = %4 %14 = inttoptr i64 %11 to ptr %15 = atomicrmw add ptr %14, i32 1 monotonic, align 4 br label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit _ZN4absl12lts_202407226StatusC2ERKS1_.exit: ; preds = %4, %13 invoke void %10(ptr noundef %0, ptr noundef nonnull %5) - to label %16 unwind label %24 + to label %16 unwind label %23 -16: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit +20: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit %17 = load i64, ptr %5, align 8, !tbaa !56 %18 = and i64 %17, 1 %.not.i.i4 = icmp eq i64 %18, 0 @@ -2298,18 +2298,18 @@ _ZN4absl12lts_202407226StatusC2ERKS1_.exit: ; preds = %4, %13 21: ; preds = %19 %22 = landingpad { ptr, i32 } catch ptr null - %23 = extractvalue { ptr, i32 } %22, 0 - call void @__clang_call_terminate(ptr %23) #29 + %22 = extractvalue { ptr, i32 } %22, 0 + call void @__clang_call_terminate(ptr %22) #29 unreachable _ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %16, %19 ret void -24: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit - %25 = landingpad { ptr, i32 } +23: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit + %24 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #26 - resume { ptr, i32 } %25 + resume { ptr, i32 } %24 } ; Function Attrs: mustprogress uwtable diff --git a/bench/hwloc/optimized/common-ps.ll b/bench/hwloc/optimized/common-ps.ll index 8fa8ff8e084..be41499e681 100644 --- a/bench/hwloc/optimized/common-ps.ll +++ b/bench/hwloc/optimized/common-ps.ll @@ -37,7 +37,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %10 = trunc i64 %9 to i32 %11 = tail call noalias ptr @hwloc_bitmap_alloc() #15 %.not = icmp eq ptr %11, null - br i1 %.not, label %193, label %12 + br i1 %.not, label %192, label %12 12: ; preds = %4 %13 = tail call noalias dereferenceable_or_null(36) ptr @malloc(i64 noundef 36) #16 @@ -300,7 +300,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no store i8 0, ptr %144, align 1, !tbaa !12 br label %145 -145: ; preds = %139, %141, %136 +145:; preds = %139, %141, %136 %146 = load ptr, ptr %109, align 8, !tbaa !18 %147 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %146, i64 %123, i32 3, i64 15 store i8 0, ptr %147, align 1, !tbaa !12 @@ -311,15 +311,15 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %.not183 = icmp eq ptr %150, null br i1 %.not183, label %152, label %151 -151: ; preds = %145 +151: ; preds = %145 store i8 0, ptr %150, align 1, !tbaa !12 br label %152 152: ; preds = %145, %151, %126 call void @free(ptr noundef nonnull %125) #15 - br label %153 + br label %154 -153: ; preds = %152, %121 +154: ; preds = %152, %121 %154 = trunc i64 %118 to i32 br i1 %.not184, label %157, label %155 @@ -333,14 +333,14 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %.not185 = icmp eq i32 %158, 0 br i1 %.not185, label %159, label %171 -159: ; preds = %157, %155 +159: ; preds = %157, %155 %160 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 %161 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 %.not187 = icmp eq i32 %161, 0 br i1 %.not187, label %162, label %171 -162: ; preds = %159 - %163 = call noalias ptr @hwloc_bitmap_dup(ptr noundef nonnull %11) #15 +162:; preds = %159 + %165 = call noalias ptr @hwloc_bitmap_dup(ptr noundef nonnull %11) #17 %164 = load ptr, ptr %109, align 8, !tbaa !18 %165 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %164, i64 %123, i32 1 store ptr %163, ptr %165, align 8, !tbaa !22 @@ -348,7 +348,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %.not188 = icmp eq i32 %166, 0 br i1 %.not188, label %167, label %171 -167: ; preds = %162 +167:; preds = %162 %168 = getelementptr inbounds nuw %struct.hwloc_ps_thread, ptr %164, i64 %123, i32 2 store i32 1, ptr %168, align 8, !tbaa !23 %169 = load i32, ptr %112, align 8, !tbaa !24 @@ -356,7 +356,7 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no store i32 %170, ptr %112, align 8, !tbaa !24 br label %171 -171: ; preds = %162, %167, %159, %157, %155 +171:; preds = %162, %167, %159, %157, %155 %172 = add i32 %.0145.ph, 1 %173 = load i32, ptr %113, align 4, !tbaa !25 %174 = add i32 %173, 1 @@ -388,13 +388,13 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no %.not190 = icmp eq i32 %183, 0 br i1 %.not190, label %184, label %192 -184: ; preds = %182, %180 +184: ; preds = %182, %180 %185 = call i32 @hwloc_bitmap_and(ptr noundef nonnull %11, ptr noundef nonnull %11, ptr noundef %1) #15 %186 = call i32 @hwloc_bitmap_iszero(ptr noundef nonnull %11) #17 %.not192 = icmp eq i32 %186, 0 - br i1 %.not192, label %187, label %192 + br i1 %.not191, label %187, label %192 -187: ; preds = %184 +187: ; preds = %184 %188 = call i32 @hwloc_bitmap_isequal(ptr noundef nonnull %11, ptr noundef %1) #17 %.not193 = icmp eq i32 %188, 0 %189 = zext i1 %.not193 to i32 @@ -406,13 +406,13 @@ define hidden range(i32 -1, 1) i32 @hwloc_ps_read_process(ptr noundef %0, ptr no .sink.split: ; preds = %18, %12 tail call void @free(ptr noundef nonnull %13) #15 - br label %192 + br label %191 -192: ; preds = %.sink.split, %184, %182, %180 +191: ; preds = %.sink.split, %184, %182, %180 call void @hwloc_bitmap_free(ptr noundef nonnull %11) #15 - br label %193 + br label %192 -193: ; preds = %4, %192, %187 +192: ; preds = %4, %191, %187 %.0 = phi i32 [ -1, %192 ], [ 0, %187 ], [ -1, %4 ] ret i32 %.0 } diff --git a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll index 605a6d0f574..c646474b4f2 100644 --- a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll +++ b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll @@ -6282,44 +6282,44 @@ define hidden void @"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$ima %.07.i.i = phi i64 [ %7, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i" ], [ 0, %1 ] %9 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !1443) - br label %10 + br label %9 -10: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", %.lr.ph.i.i - %.07.i.i.i = phi i64 [ 0, %.lr.ph.i.i ], [ %12, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i" ] - %11 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i.i - %12 = add nuw nsw i64 %.07.i.i.i, 1 +9: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", %.lr.ph.i.i + %.07.i.i.i = phi i64 [ 0, %.lr.ph.i.i ], [ %11, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i" ] + %10 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i.i + %11 = add nuw nsw i64 %.07.i.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1446) tail call void @llvm.experimental.noalias.scope.decl(metadata !1449) tail call void @llvm.experimental.noalias.scope.decl(metadata !1452) tail call void @llvm.experimental.noalias.scope.decl(metadata !1455) - %13 = load i64, ptr %11, align 8, !alias.scope !1458, !noalias !1461, !noundef !4 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", label %15 + %12 = load i64, ptr %10, align 8, !alias.scope !1458, !noalias !1461, !noundef !4 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i", label %14 -15: ; preds = %10 - %16 = shl nuw i64 %13, 4 - %17 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %18 = load ptr, ptr %17, align 8, !alias.scope !1458, !noalias !1461, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %16, i64 noundef 8) #45, !noalias !1463 +14: ; preds = %9 + %15 = shl nuw i64 %12, 4 + %16 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %17 = load ptr, ptr %16, align 8, !alias.scope !1458, !noalias !1461, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %17, i64 noundef %15, i64 noundef 8) #45, !noalias !1463 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i": ; preds = %15, %10 - %19 = icmp eq i64 %12, 5 - br i1 %19, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i", label %10 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i": ; preds = %14, %9 + %18 = icmp eq i64 %11, 5 + br i1 %18, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i", label %9 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i", %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1464) tail call void @llvm.experimental.noalias.scope.decl(metadata !1467) - %20 = load i64, ptr %0, align 8, !alias.scope !1470, !noalias !1473, !noundef !4 - %21 = icmp eq i64 %20, 0 - br i1 %21, label %"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1", label %22 + %19 = load i64, ptr %0, align 8, !alias.scope !1470, !noalias !1473, !noundef !4 + %20 = icmp eq i64 %19, 0 + br i1 %20, label %"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1", label %21 -22: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit" - %23 = mul nuw i64 %20, 200 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %23, i64 noundef 8) #45, !noalias !1475 +21: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit" + %22 = mul nuw i64 %19, 200 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %22, i64 noundef 8) #45, !noalias !1475 br label %"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1" -"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit", %22 +"_ZN4core3ptr113drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h6a0d0489a94ac6dfE.llvm.9832446184049035033.exit1": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit", %21 ret void } @@ -29270,44 +29270,44 @@ define hidden void @"_ZN4core3ptr63drop_in_place$LT$image..codecs..webp..lossles %.07.i.i.i = phi i64 [ %23, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i" ], [ 0, %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h88c6982753044a7aE.exit2" ] %25 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %19, i64 0, i64 %.07.i.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !13988) - br label %26 + br label %25 -26: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", %.lr.ph.i.i.i - %.07.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i ], [ %28, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i" ] - %27 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %25, i64 0, i64 %.07.i.i.i.i - %28 = add nuw nsw i64 %.07.i.i.i.i, 1 +25: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", %.lr.ph.i.i.i + %.07.i.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i ], [ %27, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i" ] + %26 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %25, i64 0, i64 %.07.i.i.i.i + %27 = add nuw nsw i64 %.07.i.i.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !13991) tail call void @llvm.experimental.noalias.scope.decl(metadata !13994) tail call void @llvm.experimental.noalias.scope.decl(metadata !13997) tail call void @llvm.experimental.noalias.scope.decl(metadata !14000) - %29 = load i64, ptr %27, align 8, !alias.scope !14003, !noalias !14006, !noundef !4 - %30 = icmp eq i64 %29, 0 - br i1 %30, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", label %31 + %28 = load i64, ptr %26, align 8, !alias.scope !14003, !noalias !14006, !noundef !4 + %29 = icmp eq i64 %28, 0 + br i1 %29, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i", label %30 -31: ; preds = %26 - %32 = shl nuw i64 %29, 4 - %33 = getelementptr inbounds nuw i8, ptr %27, i64 8 - %34 = load ptr, ptr %33, align 8, !alias.scope !14003, !noalias !14006, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %32, i64 noundef 8) #45, !noalias !14008 +30: ; preds = %25 + %31 = shl nuw i64 %28, 4 + %32 = getelementptr inbounds nuw i8, ptr %26, i64 8 + %33 = load ptr, ptr %32, align 8, !alias.scope !14003, !noalias !14006, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %31, i64 noundef 8) #45, !noalias !14008 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i": ; preds = %31, %26 - %35 = icmp eq i64 %28, 5 - br i1 %35, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i", label %26 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i.i.i": ; preds = %30, %25 + %34 = icmp eq i64 %27, 5 + br i1 %34, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i", label %25 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i.i.i", %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h88c6982753044a7aE.exit2" tail call void @llvm.experimental.noalias.scope.decl(metadata !14009) tail call void @llvm.experimental.noalias.scope.decl(metadata !14012) - %36 = load i64, ptr %17, align 8, !alias.scope !14015, !noalias !14018, !noundef !4 - %37 = icmp eq i64 %36, 0 - br i1 %37, label %"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit", label %38 + %35 = load i64, ptr %17, align 8, !alias.scope !14015, !noalias !14018, !noundef !4 + %36 = icmp eq i64 %35, 0 + br i1 %36, label %"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit", label %37 -38: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i" - %39 = mul nuw i64 %36, 200 - tail call void @__rust_dealloc(ptr noundef nonnull %19, i64 noundef %39, i64 noundef 8) #45, !noalias !14020 +37: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i" + %38 = mul nuw i64 %35, 200 + tail call void @__rust_dealloc(ptr noundef nonnull %19, i64 noundef %38, i64 noundef 8) #45, !noalias !14020 br label %"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit" -"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i", %38 +"_ZN4core3ptr106drop_in_place$LT$alloc..vec..Vec$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$$GT$17h689b00c24962fdafE.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60b25e4120bd9585E.llvm.9832446184049035033.exit.i", %37 ret void } @@ -34465,30 +34465,30 @@ define hidden void @"_ZN4core3ptr93drop_in_place$LT$$u5b$$u5b$image..codecs..web %.07 = phi i64 [ %4, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit" ], [ 0, %2 ] %6 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %0, i64 0, i64 %.07 tail call void @llvm.experimental.noalias.scope.decl(metadata !16579) - br label %7 + br label %6 -7: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", %.lr.ph - %.07.i = phi i64 [ 0, %.lr.ph ], [ %9, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i" ] - %8 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %6, i64 0, i64 %.07.i - %9 = add nuw nsw i64 %.07.i, 1 +6: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", %.lr.ph + %.07.i = phi i64 [ 0, %.lr.ph ], [ %8, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i" ] + %7 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %6, i64 0, i64 %.07.i + %8 = add nuw nsw i64 %.07.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !16582) tail call void @llvm.experimental.noalias.scope.decl(metadata !16585) tail call void @llvm.experimental.noalias.scope.decl(metadata !16588) tail call void @llvm.experimental.noalias.scope.decl(metadata !16591) - %10 = load i64, ptr %8, align 8, !alias.scope !16594, !noalias !16597, !noundef !4 - %11 = icmp eq i64 %10, 0 - br i1 %11, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", label %12 + %9 = load i64, ptr %7, align 8, !alias.scope !16594, !noalias !16597, !noundef !4 + %10 = icmp eq i64 %9, 0 + br i1 %10, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i", label %11 -12: ; preds = %7 - %13 = shl nuw i64 %10, 4 - %14 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %15 = load ptr, ptr %14, align 8, !alias.scope !16594, !noalias !16597, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %15, i64 noundef %13, i64 noundef 8) #45, !noalias !16599 +11: ; preds = %6 + %12 = shl nuw i64 %9, 4 + %13 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %14 = load ptr, ptr %13, align 8, !alias.scope !16594, !noalias !16597, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %12, i64 noundef 8) #45, !noalias !16599 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i": ; preds = %12, %7 - %16 = icmp eq i64 %9, 5 - br i1 %16, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit", label %7 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i": ; preds = %11, %6 + %15 = icmp eq i64 %8, 5 + br i1 %15, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit", label %6 "_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit._crit_edge": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit", %2 ret void @@ -41962,30 +41962,30 @@ define hidden void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops %.07.i = phi i64 [ %7, %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i" ], [ 0, %1 ] %9 = getelementptr inbounds [0 x [5 x { { { i64, ptr }, i64 }, i64, i64 }]], ptr %3, i64 0, i64 %.07.i tail call void @llvm.experimental.noalias.scope.decl(metadata !18141) - br label %10 + br label %9 -10: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", %.lr.ph.i - %.07.i.i = phi i64 [ 0, %.lr.ph.i ], [ %12, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i" ] - %11 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i - %12 = add nuw nsw i64 %.07.i.i, 1 +9: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", %.lr.ph.i + %.07.i.i = phi i64 [ 0, %.lr.ph.i ], [ %11, %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i" ] + %10 = getelementptr inbounds nuw [5 x { { { i64, ptr }, i64 }, i64, i64 }], ptr %9, i64 0, i64 %.07.i.i + %11 = add nuw nsw i64 %.07.i.i, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !18144) tail call void @llvm.experimental.noalias.scope.decl(metadata !18147) tail call void @llvm.experimental.noalias.scope.decl(metadata !18150) tail call void @llvm.experimental.noalias.scope.decl(metadata !18153) - %13 = load i64, ptr %11, align 8, !alias.scope !18156, !noalias !18159, !noundef !4 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", label %15 + %12 = load i64, ptr %10, align 8, !alias.scope !18156, !noalias !18159, !noundef !4 + %13 = icmp eq i64 %12, 0 + br i1 %13, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i", label %14 -15: ; preds = %10 - %16 = shl nuw i64 %13, 4 - %17 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %18 = load ptr, ptr %17, align 8, !alias.scope !18156, !noalias !18159, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %16, i64 noundef 8) #45, !noalias !18161 +14: ; preds = %9 + %15 = shl nuw i64 %12, 4 + %16 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %17 = load ptr, ptr %16, align 8, !alias.scope !18156, !noalias !18159, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %17, i64 noundef %15, i64 noundef 8) #45, !noalias !18161 br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i" -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i": ; preds = %15, %10 - %19 = icmp eq i64 %12, 5 - br i1 %19, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i", label %10 +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..huffman..HuffmanTree$GT$17hb4744e559710e361E.exit.i.i": ; preds = %14, %9 + %18 = icmp eq i64 %11, 5 + br i1 %18, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i", label %9 "_ZN4core3ptr93drop_in_place$LT$$u5b$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$u5d$$GT$17hacc92d200b6ca886E.llvm.9832446184049035033.exit": ; preds = %"_ZN4core3ptr83drop_in_place$LT$$u5b$image..codecs..webp..huffman..HuffmanTree$u3b$$u20$5$u5d$$GT$17h858c5e22d8df22a2E.llvm.9832446184049035033.exit.loopexit.i", %1 ret void diff --git a/bench/libjpeg-turbo/optimized/jquant1.ll b/bench/libjpeg-turbo/optimized/jquant1.ll index 4b4c28922c8..4fba14f63d6 100644 --- a/bench/libjpeg-turbo/optimized/jquant1.ll +++ b/bench/libjpeg-turbo/optimized/jquant1.ll @@ -414,7 +414,7 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, switch i32 %12, label %113 [ i32 0, label %13 i32 1, label %20 - i32 2, label %75 + i32 2, label %73 ] 13: ; preds = %2 @@ -469,7 +469,7 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, br label %40 40: ; preds = %make_odither_array.exit.i, %.lr.ph26.i - %41 = phi i32 [ %34, %.lr.ph26.i ], [ %71, %make_odither_array.exit.i ] + %41 = phi i32 [ %34, %.lr.ph26.i ], [ %69, %make_odither_array.exit.i ] %indvars.iv29.i = phi i64 [ 0, %.lr.ph26.i ], [ %indvars.iv.next30.i, %make_odither_array.exit.i ] %42 = getelementptr inbounds nuw [4 x i32], ptr %37, i64 0, i64 %indvars.iv29.i %43 = load i32, ptr %42, align 4, !tbaa !54 @@ -503,123 +503,123 @@ define internal void @start_pass_1_quant(ptr noundef initializes((156, 168)) %0, %57 = shl nsw i64 %56, 9 br label %.preheader.i.i -.preheader.i.i: ; preds = %70, %.thread.i +.preheader.i.i: ; preds = %68, %.thread.i %indvars.iv22.i.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next23.i.i, %70 ] %58 = getelementptr inbounds nuw [16 x [16 x i8]], ptr @base_dither_matrix, i64 0, i64 %indvars.iv22.i.i %59 = getelementptr inbounds nuw [16 x i32], ptr %54, i64 %indvars.iv22.i.i br label %60 -60: ; preds = %60, %.preheader.i.i +58: ; preds = %58, %.preheader.i.i %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %60 ] - %61 = getelementptr inbounds nuw [16 x i8], ptr %58, i64 0, i64 %indvars.iv.i.i - %62 = load i8, ptr %61, align 1, !tbaa !34 - %63 = zext i8 %62 to i32 - %64 = shl nuw nsw i32 %63, 1 - %65 = sub nsw i32 255, %64 - %narrow.i.i = mul nsw i32 %65, 255 - %66 = sext i32 %narrow.i.i to i64 - %67 = sdiv i64 %66, %57 - %68 = trunc nsw i64 %67 to i32 - %69 = getelementptr inbounds nuw [16 x i32], ptr %59, i64 0, i64 %indvars.iv.i.i - store i32 %68, ptr %69, align 4, !tbaa !54 + %59 = getelementptr inbounds nuw [16 x i8], ptr %58, i64 0, i64 %indvars.iv.i.i + %60 = load i8, ptr %59, align 1, !tbaa !34 + %61 = zext i8 %60 to i32 + %62 = shl nuw nsw i32 %61, 1 + %63 = sub nsw i32 255, %62 + %narrow.i.i = mul nsw i32 %63, 255 + %64 = sext i32 %narrow.i.i to i64 + %65 = sdiv i64 %64, %57 + %66 = trunc nsw i64 %65 to i32 + %67 = getelementptr inbounds nuw [16 x i32], ptr %59, i64 0, i64 %indvars.iv.i.i + store i32 %66, ptr %67, align 4, !tbaa !54 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 16 - br i1 %exitcond.not.i.i, label %70, label %60, !llvm.loop !79 + br i1 %exitcond.not.i.i, label %68, label %58, !llvm.loop !79 -70: ; preds = %60 +68: ; preds = %58 %indvars.iv.next23.i.i = add nuw nsw i64 %indvars.iv22.i.i, 1 %exitcond25.not.i.i = icmp eq i64 %indvars.iv.next23.i.i, 16 br i1 %exitcond25.not.i.i, label %make_odither_array.exit.loopexit.i, label %.preheader.i.i, !llvm.loop !80 -make_odither_array.exit.loopexit.i: ; preds = %70 +make_odither_array.exit.loopexit.i: ; preds = %68 %.pre.i = load i32, ptr %21, align 8, !tbaa !51 br label %make_odither_array.exit.i make_odither_array.exit.i: ; preds = %make_odither_array.exit.loopexit.i, %48 - %71 = phi i32 [ %41, %48 ], [ %.pre.i, %make_odither_array.exit.loopexit.i ] + %69 = phi i32 [ %41, %48 ], [ %.pre.i, %make_odither_array.exit.loopexit.i ] %.1.i = phi ptr [ %50, %48 ], [ %54, %make_odither_array.exit.loopexit.i ] - %72 = getelementptr inbounds nuw [4 x ptr], ptr %38, i64 0, i64 %indvars.iv29.i - store ptr %.1.i, ptr %72, align 8, !tbaa !50 + %70 = getelementptr inbounds nuw [4 x ptr], ptr %38, i64 0, i64 %indvars.iv29.i + store ptr %.1.i, ptr %70, align 8, !tbaa !50 %indvars.iv.next30.i = add nuw nsw i64 %indvars.iv29.i, 1 - %73 = sext i32 %71 to i64 - %74 = icmp slt i64 %indvars.iv.next30.i, %73 - br i1 %74, label %40, label %create_odither_tables.exit, !llvm.loop !81 - -75: ; preds = %2 - %76 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr @quantize_fs_dither, ptr %76, align 8, !tbaa !75 - %77 = getelementptr inbounds nuw i8, ptr %4, i64 152 - store i32 0, ptr %77, align 8, !tbaa !82 - %78 = getelementptr inbounds nuw i8, ptr %4, i64 120 - %79 = load ptr, ptr %78, align 8, !tbaa !48 - %80 = icmp eq ptr %79, null - br i1 %80, label %81, label %.alloc_fs_workspace.exit_crit_edge - -.alloc_fs_workspace.exit_crit_edge: ; preds = %75 + %71 = sext i32 %69 to i64 + %72 = icmp slt i64 %indvars.iv.next30.i, %71 + br i1 %72, label %40, label %create_odither_tables.exit, !llvm.loop !81 + +73: ; preds = %2 + %74 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr @quantize_fs_dither, ptr %74, align 8, !tbaa !75 + %75 = getelementptr inbounds nuw i8, ptr %4, i64 152 + store i32 0, ptr %75, align 8, !tbaa !82 + %76 = getelementptr inbounds nuw i8, ptr %4, i64 120 + %77 = load ptr, ptr %76, align 8, !tbaa !48 + %78 = icmp eq ptr %77, null + br i1 %78, label %79, label %.alloc_fs_workspace.exit_crit_edge + +.alloc_fs_workspace.exit_crit_edge: ; preds = %73 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 144 %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !51 br label %alloc_fs_workspace.exit -81: ; preds = %75 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %83 = load i32, ptr %82, align 8, !tbaa !70 - %84 = add i32 %83, 2 - %85 = zext i32 %84 to i64 - %86 = shl nuw nsw i64 %85, 1 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %88 = load i32, ptr %87, align 8, !tbaa !51 - %89 = icmp sgt i32 %88, 0 - br i1 %89, label %.lr.ph.i30, label %create_odither_tables.exit - -.lr.ph.i30: ; preds = %81 - %90 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %91 - -91: ; preds = %91, %.lr.ph.i30 +79: ; preds = %73 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %81 = load i32, ptr %80, align 8, !tbaa !70 + %82 = add i32 %81, 2 + %83 = zext i32 %82 to i64 + %84 = shl nuw nsw i64 %83, 1 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %86 = load i32, ptr %85, align 8, !tbaa !51 + %87 = icmp sgt i32 %86, 0 + br i1 %87, label %.lr.ph.i30, label %create_odither_tables.exit + +.lr.ph.i30: ; preds = %79 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %89 + +89: ; preds = %89, %.lr.ph.i30 %indvars.iv.i31 = phi i64 [ 0, %.lr.ph.i30 ], [ %indvars.iv.next.i32, %91 ] - %92 = load ptr, ptr %90, align 8, !tbaa !39 - %93 = getelementptr inbounds nuw i8, ptr %92, i64 8 - %94 = load ptr, ptr %93, align 8, !tbaa !71 - %95 = tail call ptr %94(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %86) #7 - %96 = getelementptr inbounds nuw [4 x ptr], ptr %78, i64 0, i64 %indvars.iv.i31 - store ptr %95, ptr %96, align 8, !tbaa !48 + %90 = load ptr, ptr %88, align 8, !tbaa !39 + %91 = getelementptr inbounds nuw i8, ptr %90, i64 8 + %92 = load ptr, ptr %91, align 8, !tbaa !71 + %93 = tail call ptr %94(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %84) #7 + %94 = getelementptr inbounds nuw [4 x ptr], ptr %76, i64 0, i64 %indvars.iv.i31 + store ptr %93, ptr %94, align 8, !tbaa !48 %indvars.iv.next.i32 = add nuw nsw i64 %indvars.iv.i31, 1 - %97 = load i32, ptr %87, align 8, !tbaa !51 - %98 = sext i32 %97 to i64 - %99 = icmp slt i64 %indvars.iv.next.i32, %98 - br i1 %99, label %91, label %alloc_fs_workspace.exit, !llvm.loop !72 - -alloc_fs_workspace.exit: ; preds = %91, %.alloc_fs_workspace.exit_crit_edge - %100 = phi i32 [ %.pre, %.alloc_fs_workspace.exit_crit_edge ], [ %97, %91 ] - %101 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %102 = load i32, ptr %101, align 8, !tbaa !70 - %103 = add i32 %102, 2 - %104 = zext i32 %103 to i64 - %105 = shl nuw nsw i64 %104, 1 - %106 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %107 = icmp sgt i32 %100, 0 - br i1 %107, label %.lr.ph, label %create_odither_tables.exit + %95 = load i32, ptr %85, align 8, !tbaa !51 + %96 = sext i32 %95 to i64 + %97 = icmp slt i64 %indvars.iv.next.i32, %96 + br i1 %97, label %89, label %alloc_fs_workspace.exit, !llvm.loop !72 + +alloc_fs_workspace.exit: ; preds = %89, %.alloc_fs_workspace.exit_crit_edge + %98 = phi i32 [ %.pre, %.alloc_fs_workspace.exit_crit_edge ], [ %95, %91 ] + %99 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %100 = load i32, ptr %99, align 8, !tbaa !70 + %101 = add i32 %100, 2 + %102 = zext i32 %101 to i64 + %103 = shl nuw nsw i64 %102, 1 + %104 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %105 = icmp sgt i32 %98, 0 + br i1 %105, label %.lr.ph, label %create_odither_tables.exit .lr.ph: ; preds = %alloc_fs_workspace.exit, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %alloc_fs_workspace.exit ] - %108 = getelementptr inbounds nuw [4 x ptr], ptr %78, i64 0, i64 %indvars.iv - %109 = load ptr, ptr %108, align 8, !tbaa !48 - tail call void @jzero_far(ptr noundef %109, i64 noundef %105) #7 + %106 = getelementptr inbounds nuw [4 x ptr], ptr %76, i64 0, i64 %indvars.iv + %107 = load ptr, ptr %106, align 8, !tbaa !48 + tail call void @jzero_far(ptr noundef %107, i64 noundef %103) #7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %110 = load i32, ptr %106, align 8, !tbaa !51 - %111 = sext i32 %110 to i64 - %112 = icmp slt i64 %indvars.iv.next, %111 - br i1 %112, label %.lr.ph, label %create_odither_tables.exit, !llvm.loop !83 - -113: ; preds = %2 - %114 = load ptr, ptr %0, align 8, !tbaa !30 - %115 = getelementptr inbounds nuw i8, ptr %114, i64 40 - store i32 48, ptr %115, align 8, !tbaa !31 - %116 = load ptr, ptr %114, align 8, !tbaa !35 + %108 = load i32, ptr %104, align 8, !tbaa !51 + %109 = sext i32 %108 to i64 + %110 = icmp slt i64 %indvars.iv.next, %109 + br i1 %110, label %.lr.ph, label %create_odither_tables.exit, !llvm.loop !83 + +111: ; preds = %2 + %112 = load ptr, ptr %0, align 8, !tbaa !30 + %113 = getelementptr inbounds nuw i8, ptr %112, i64 40 + store i32 48, ptr %113, align 8, !tbaa !31 + %114 = load ptr, ptr %112, align 8, !tbaa !35 tail call void %116(ptr noundef nonnull %0) #7 br label %create_odither_tables.exit -create_odither_tables.exit: ; preds = %.lr.ph, %make_odither_array.exit.i, %81, %alloc_fs_workspace.exit, %33, %29, %18, %19, %113 +create_odither_tables.exit: ; preds = %.lr.ph, %make_odither_array.exit.i, %79, %alloc_fs_workspace.exit, %33, %29, %18, %19, %111 ret void } diff --git a/bench/libwebp/optimized/filter_enc.ll b/bench/libwebp/optimized/filter_enc.ll index fe0861de3a4..3dfa2915f12 100644 --- a/bench/libwebp/optimized/filter_enc.ll +++ b/bench/libwebp/optimized/filter_enc.ll @@ -267,7 +267,7 @@ GetMBSSIM.exit51: ; preds = %108 store double %115, ptr %113, align 8, !tbaa !16 br label %116 -116: ; preds = %54, %GetMBSSIM.exit51 +116:; preds = %54, %GetMBSSIM.exit51 %117 = add nsw i32 %.057, %18 %.not34 = icmp sgt i32 %117, %15 br i1 %.not34, label %.loopexit, label %54, !llvm.loop !50 @@ -333,10 +333,10 @@ define hidden void @VP8AdjustFilterStrength(ptr noundef readonly captures(none) %27 = getelementptr inbounds [8 x [64 x i8]], ptr @kLevelsFromDelta, i64 0, i64 %26 br label %28 -28: ; preds = %.preheader, %46 - %indvars.iv57 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next58, %46 ] +28: ; preds = %.preheader, %46 + %.03850 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next58, %46 ] %.03850 = phi i32 [ 0, %.preheader ], [ %spec.select, %46 ] - %29 = getelementptr inbounds nuw [4 x %struct.VP8SegmentInfo], ptr %23, i64 0, i64 %indvars.iv57 + %29 = getelementptr inbounds nuw [4 x %struct.VP8SegmentInfo], ptr %23, i64 0, i64 %.03850 %30 = getelementptr inbounds nuw i8, ptr %29, i64 688 %31 = load i32, ptr %30, align 8, !tbaa !55 %32 = getelementptr inbounds nuw i8, ptr %29, i64 226 @@ -354,23 +354,23 @@ define hidden void @VP8AdjustFilterStrength(ptr noundef readonly captures(none) %44 = icmp slt i32 %43, %41 br i1 %44, label %45, label %46 -45: ; preds = %28 +45:; preds = %28 store i32 %41, ptr %42, align 4, !tbaa !20 br label %46 -46: ; preds = %45, %28 +46:; preds = %45, %28 %47 = phi i32 [ %41, %45 ], [ %43, %28 ] %spec.select = tail call i32 @llvm.smax.i32(i32 %.03850, i32 %47) %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 4 - br i1 %exitcond60.not, label %48, label %28, !llvm.loop !58 + br i1 %exitcond60.not, label %47, label %28, !llvm.loop !58 -48: ; preds = %46 - %49 = getelementptr inbounds nuw i8, ptr %3, i64 20 - store i32 %spec.select, ptr %49, align 4, !tbaa !59 +47: ; preds = %46 + %48 = getelementptr inbounds nuw i8, ptr %3, i64 20 + store i32 %spec.select, ptr %48, align 4, !tbaa !59 br label %.loopexit -.loopexit: ; preds = %16, %18, %48 +.loopexit: ; preds = %16, %18, %47 ret void } diff --git a/bench/libwebp/optimized/vp8_dec.ll b/bench/libwebp/optimized/vp8_dec.ll index 1b6fb64f0d3..afcd6483470 100644 --- a/bench/libwebp/optimized/vp8_dec.ll +++ b/bench/libwebp/optimized/vp8_dec.ll @@ -1222,7 +1222,7 @@ ParseResiduals.exit: ; preds = %145, %151 store i8 %190, ptr %187, align 1, !tbaa !100 br label %191 -191: ; preds = %171, %167 +191: ; preds = %171, %167 %192 = getelementptr inbounds nuw i8, ptr %1, i64 40 %193 = load i32, ptr %192, align 8, !tbaa !66 %.not32 = icmp eq i32 %193, 0 diff --git a/bench/lief/optimized/aria.ll b/bench/lief/optimized/aria.ll index 7b054f83804..8c4e3cb5342 100644 --- a/bench/lief/optimized/aria.ll +++ b/bench/lief/optimized/aria.ll @@ -651,7 +651,7 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture %8 = zext i8 %6 to i64 br label %.preheader40 -.preheader40: ; preds = %.preheader40.lr.ph, %17 +.preheader40: ; preds = %.preheader40.lr.ph, %15 %indvars.iv49 = phi i64 [ %8, %.preheader40.lr.ph ], [ %indvars.iv.next50, %17 ] %indvars.iv47 = phi i64 [ 0, %.preheader40.lr.ph ], [ %indvars.iv.next48, %17 ] %9 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %7, i64 0, i64 %indvars.iv47 @@ -663,13 +663,13 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture br i1 %.not58, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %.preheader - %11 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 4 %wide.trip.count = zext i8 %6 to i64 - br label %19 + br label %17 -12: ; preds = %.preheader40, %12 +10: ; preds = %.preheader40, %10 %indvars.iv = phi i64 [ 0, %.preheader40 ], [ %indvars.iv.next, %12 ] - %13 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv + %11 = getelementptr inbounds nuw [4 x i32], ptr %9, i64 0, i64 %indvars.iv %14 = load i32, ptr %13, align 4, !tbaa !3 %15 = getelementptr inbounds nuw [4 x i32], ptr %10, i64 0, i64 %indvars.iv %16 = load i32, ptr %15, align 4, !tbaa !3 @@ -677,20 +677,20 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture store i32 %14, ptr %15, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %17, label %12, !llvm.loop !13 + br i1 %exitcond.not, label %15, label %10, !llvm.loop !13 -17: ; preds = %12 +15: ; preds = %10 %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 %indvars.iv.next50 = add nsw i64 %indvars.iv49, -1 - %18 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 - br i1 %18, label %.preheader40, label %.preheader, !llvm.loop !14 + %16 = icmp slt i64 %indvars.iv.next48, %indvars.iv.next50 + br i1 %16, label %.preheader40, label %.preheader, !llvm.loop !14 -19: ; preds = %.lr.ph, %19 +17: ; preds = %.lr.ph, %17 %indvars.iv54 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next55, %19 ] - %20 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %11, i64 0, i64 %indvars.iv54 - %21 = getelementptr inbounds nuw i8, ptr %20, i64 4 - %22 = getelementptr inbounds nuw i8, ptr %20, i64 8 - %23 = getelementptr inbounds nuw i8, ptr %20, i64 12 + %18 = getelementptr inbounds nuw [17 x [4 x i32]], ptr %9, i64 0, i64 %indvars.iv54 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 4 + %20 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %21 = getelementptr inbounds nuw i8, ptr %18, i64 12 %24 = load i32, ptr %21, align 4, !tbaa !3 %25 = load i32, ptr %20, align 4, !tbaa !3 %26 = load i32, ptr %23, align 4, !tbaa !3 @@ -716,7 +716,7 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture %45 = tail call i32 @llvm.bswap.i32(i32 %44) %46 = xor i32 %45, %24 %47 = xor i32 %45, %24 - %48 = tail call i32 @llvm.fshl.i32(i32 %46, i32 %47, i32 16) + %47 = tail call i32 @llvm.fshl.i32(i32 %46, i32 %47, i32 16) store i32 %48, ptr %20, align 4, !tbaa !3 %49 = tail call i32 @llvm.fshl.i32(i32 %36, i32 %36, i32 16) %50 = tail call i32 @llvm.bswap.i32(i32 %36) @@ -729,9 +729,9 @@ define hidden range(i32 -92, 1) i32 @mbedtls_aria_setkey_dec(ptr noundef capture store i32 %55, ptr %22, align 4, !tbaa !3 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 %exitcond57.not = icmp eq i64 %indvars.iv.next55, %wide.trip.count - br i1 %exitcond57.not, label %.loopexit, label %19, !llvm.loop !15 + br i1 %exitcond57.not, label %.loopexit, label %17, !llvm.loop !15 -.loopexit: ; preds = %19, %5, %.preheader, %3 +.loopexit: ; preds = %17, %5, %.preheader, %3 %.0 = phi i32 [ %4, %3 ], [ 0, %.preheader ], [ 0, %5 ], [ 0, %19 ] ret i32 %.0 } diff --git a/bench/linux/optimized/forcedeth.ll b/bench/linux/optimized/forcedeth.ll index f86c45cf5dd..f74208a3a0c 100644 --- a/bench/linux/optimized/forcedeth.ll +++ b/bench/linux/optimized/forcedeth.ll @@ -8228,13 +8228,13 @@ define internal fastcc void @nv_gear_backoff_reseed(ptr %.3120.val) unnamed_addr %52 = load i32, ptr %4, align 4 %53 = zext i32 %52 to i64 %54 = add nsw i64 %51, -1 - %.split = getelementptr [8 x [15 x i32]], ptr @main_seedset, i64 0, i64 %53 + %55 = getelementptr [8 x [15 x i32]], ptr @main_seedset, i64 0, i64 %53 %55 = getelementptr [15 x i32], ptr %.split, i64 0, i64 %54 %56 = load i32, ptr %55, align 4 %57 = and i32 %56, 1023 %58 = trunc i64 %51 to i32 %59 = shl i32 %58, 24 - %.split1 = getelementptr [8 x [15 x i32]], ptr @gear_seedset, i64 0, i64 %53 + %60 = getelementptr [8 x [15 x i32]], ptr @gear_seedset, i64 0, i64 %53 %60 = getelementptr [15 x i32], ptr %.split1, i64 0, i64 %54 %61 = load i32, ptr %60, align 4 %62 = shl i32 %61, 12 diff --git a/bench/linux/optimized/intel_guc_submission.ll b/bench/linux/optimized/intel_guc_submission.ll index 498a88533ab..52ec03a2c8b 100644 --- a/bench/linux/optimized/intel_guc_submission.ll +++ b/bench/linux/optimized/intel_guc_submission.ll @@ -5511,7 +5511,7 @@ define dso_local ptr @intel_guc_lookup_engine(ptr noundef readonly captures(none %7 = getelementptr i8, ptr %0, i64 3624 %8 = zext i8 %6 to i64 %9 = zext i8 %2 to i64 - %.split = getelementptr [6 x [9 x ptr]], ptr %7, i64 0, i64 %8 + %10 = getelementptr [6 x [9 x ptr]], ptr %7, i64 0, i64 %8 %10 = getelementptr [9 x ptr], ptr %.split, i64 0, i64 %9 %11 = load ptr, ptr %10, align 8 ret ptr %11 @@ -5554,7 +5554,7 @@ define dso_local noundef range(i32 -71, 1) i32 @intel_guc_engine_failure_process %27 = zext i8 %25 to i64 %28 = and i32 %19, 255 %29 = zext nneg i32 %28 to i64 - %.split = getelementptr [6 x [9 x ptr]], ptr %26, i64 0, i64 %27 + %30 = getelementptr [6 x [9 x ptr]], ptr %26, i64 0, i64 %27 %30 = getelementptr [9 x ptr], ptr %.split, i64 0, i64 %29 %31 = load ptr, ptr %30, align 8 %32 = icmp eq ptr %31, null diff --git a/bench/llvm/optimized/PreISelIntrinsicLowering.ll b/bench/llvm/optimized/PreISelIntrinsicLowering.ll index 878fc042d84..9989a2c4761 100644 --- a/bench/llvm/optimized/PreISelIntrinsicLowering.ll +++ b/bench/llvm/optimized/PreISelIntrinsicLowering.ll @@ -1855,8 +1855,8 @@ _ZL17lowerLoadRelativeRN4llvm8FunctionE.exit: ; preds = %518, %427, %431 br i1 %645, label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", label %.lr.ph.i56 .lr.ph.i56: ; preds = %642, %.thread.i60 - %646 = phi ptr [ %697, %.thread.i60 ], [ %644, %642 ] - %.029.i = phi ptr [ %696, %.thread.i60 ], [ null, %642 ] + %646 = phi ptr [ %696, %.thread.i60 ], [ %644, %642 ] + %.029.i = phi ptr [ %695, %.thread.i60 ], [ null, %642 ] %.01528.i = phi i1 [ %.11623.i, %.thread.i60 ], [ false, %642 ] %.not.i57 = icmp eq ptr %.029.i, null br i1 %.not.i57, label %.critedge2.i59, label %647 @@ -1929,7 +1929,7 @@ _ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i: ; preds = % %692 = icmp eq i8 %691, 2 br i1 %692, label %693, label %.thread.i60 -693: ; preds = %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i, %668 +693:; preds = %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i.i.i, %668 %694 = call noundef zeroext i1 @_ZN4llvm31lowerUnaryVectorIntrinsicAsLoopERNS_6ModuleEPNS_8CallInstE(ptr noundef nonnull align 8 dereferenceable(841) %1, ptr noundef nonnull %652) #17 %695 = or i1 %.01528.i, %694 %spec.select.i63 = select i1 %694, ptr %.029.i, ptr %650 @@ -1937,20 +1937,20 @@ _ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i: ; preds = % .thread.i60: ; preds = %693, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i, %686, %654, %.critedge2.i59 %.11623.i = phi i1 [ %.01528.i, %.critedge2.i59 ], [ %.01528.i, %654 ], [ %.01528.i, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %.01528.i, %686 ], [ %695, %693 ] - %696 = phi ptr [ %650, %.critedge2.i59 ], [ %650, %654 ], [ %650, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %650, %686 ], [ %spec.select.i63, %693 ] - %697 = load ptr, ptr %643, align 8, !tbaa !102 - %698 = icmp eq ptr %697, null - br i1 %698, label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", label %.lr.ph.i56, !llvm.loop !214 + %695 = phi ptr [ %650, %.critedge2.i59 ], [ %650, %654 ], [ %650, %_ZNK4llvm18TargetLoweringBase17isOperationExpandEjNS_3EVTE.exit.i.i ], [ %650, %686 ], [ %spec.select.i63, %693 ] + %696 = load ptr, ptr %643, align 8, !tbaa !102 + %697 = icmp eq ptr %696, null + br i1 %697, label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", label %.lr.ph.i56, !llvm.loop !214 "_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit": ; preds = %647, %.thread.i60, %642 %.015.lcssa.i61 = phi i1 [ false, %642 ], [ %.01528.i, %647 ], [ %.11623.i, %.thread.i60 ] - %699 = or i1 %.0109, %.015.lcssa.i61 + %698 = or i1 %.0109, %.015.lcssa.i61 br label %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_1EbRNS2_8FunctionET_.exit" "_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_1EbRNS2_8FunctionET_.exit": ; preds = %.thread.i49, %547, %542, %71, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit", %639, %636, %633, %630, %627, %624, %621, %618, %615, %612, %609, %606, %603, %600, %597, %594, %591, %588, %585, %582, %579, %576, %573, %570, %567, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_0EbRNS2_8FunctionET_.exit", %_ZL17lowerLoadRelativeRN4llvm8FunctionE.exit, %_ZNK12_GLOBAL__N_124PreISelIntrinsicLowering22expandMemIntrinsicUsesERN4llvm8FunctionE.exit - %.1 = phi i1 [ %.0109, %71 ], [ %426, %_ZNK12_GLOBAL__N_124PreISelIntrinsicLowering22expandMemIntrinsicUsesERN4llvm8FunctionE.exit ], [ %519, %_ZL17lowerLoadRelativeRN4llvm8FunctionE.exit ], [ %541, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_0EbRNS2_8FunctionET_.exit" ], [ %569, %567 ], [ %572, %570 ], [ %575, %573 ], [ %578, %576 ], [ %581, %579 ], [ %584, %582 ], [ %587, %585 ], [ %590, %588 ], [ %593, %591 ], [ %596, %594 ], [ %599, %597 ], [ %602, %600 ], [ %605, %603 ], [ %608, %606 ], [ %611, %609 ], [ %614, %612 ], [ %617, %615 ], [ %620, %618 ], [ %623, %621 ], [ %626, %624 ], [ %629, %627 ], [ %632, %630 ], [ %635, %633 ], [ %638, %636 ], [ %641, %639 ], [ %699, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit" ], [ %.0109, %542 ], [ %.2, %547 ], [ %.3, %.thread.i49 ] - %700 = getelementptr inbounds nuw i8, ptr %.sroa.067.0110, i64 8 - %.sroa.067.0 = load ptr, ptr %700, align 8, !tbaa !91 + %.1 = phi i1 [ %.0109, %71 ], [ %426, %_ZNK12_GLOBAL__N_124PreISelIntrinsicLowering22expandMemIntrinsicUsesERN4llvm8FunctionE.exit ], [ %519, %_ZL17lowerLoadRelativeRN4llvm8FunctionE.exit ], [ %541, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_0EbRNS2_8FunctionET_.exit" ], [ %569, %567 ], [ %572, %570 ], [ %575, %573 ], [ %578, %576 ], [ %581, %579 ], [ %584, %582 ], [ %587, %585 ], [ %590, %588 ], [ %593, %591 ], [ %596, %594 ], [ %599, %597 ], [ %602, %600 ], [ %605, %603 ], [ %608, %606 ], [ %611, %609 ], [ %614, %612 ], [ %617, %615 ], [ %620, %618 ], [ %623, %621 ], [ %626, %624 ], [ %629, %627 ], [ %632, %630 ], [ %635, %633 ], [ %638, %636 ], [ %641, %639 ], [ %698, %"_ZL11forEachCallIZNK12_GLOBAL__N_124PreISelIntrinsicLowering15lowerIntrinsicsERN4llvm6ModuleEE3$_2EbRNS2_8FunctionET_.exit" ], [ %.0109, %542 ], [ %.2, %547 ], [ %.3, %.thread.i49 ] + %699 = getelementptr inbounds nuw i8, ptr %.sroa.067.0110, i64 8 + %.sroa.067.0 = load ptr, ptr %699, align 8, !tbaa !91 %.not = icmp eq ptr %.sroa.067.0, %29 br i1 %.not, label %._crit_edge, label %71 } diff --git a/bench/llvm/optimized/X86TargetMachine.ll b/bench/llvm/optimized/X86TargetMachine.ll index aca5cdb43f6..82862fe5a19 100644 --- a/bench/llvm/optimized/X86TargetMachine.ll +++ b/bench/llvm/optimized/X86TargetMachine.ll @@ -6462,8 +6462,8 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm19TargetTransformInfo5Mo br label %_ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE18isIndexedLoadLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit _ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE18isIndexedLoadLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit: ; preds = %3, %10 - %21 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] - ret i1 %21 + %20 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] + ret i1 %20 } ; Function Attrs: mustprogress nounwind uwtable @@ -6490,8 +6490,8 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm19TargetTransformInfo5Mo br label %_ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE19isIndexedStoreLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit _ZNK4llvm16BasicTTIImplBaseINS_10X86TTIImplEE19isIndexedStoreLegalENS_19TargetTransformInfo14MemIndexedModeEPNS_4TypeERKNS_10DataLayoutE.exit: ; preds = %3, %10 - %19 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] - ret i1 %19 + %18 = phi i1 [ false, %3 ], [ %spec.select.i.i, %10 ] + ret i1 %18 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/lua/optimized/lstring.ll b/bench/lua/optimized/lstring.ll index c5e5c8f280c..a82052e74e3 100644 --- a/bench/lua/optimized/lstring.ll +++ b/bench/lua/optimized/lstring.ll @@ -313,8 +313,8 @@ define hidden void @luaS_clearcache(ptr noundef captures(none) %0) local_unnamed %4 = getelementptr inbounds nuw [53 x [2 x ptr]], ptr %2, i64 0, i64 %indvars.iv14 br label %5 -5: ; preds = %.preheader, %14 - %6 = phi i1 [ true, %.preheader ], [ false, %14 ] +5: ; preds = %.preheader, %14 + %indvars.iv = phi i1 [ true, %.preheader ], [ false, %14 ] %indvars.iv = phi i64 [ 0, %.preheader ], [ 1, %14 ] %7 = getelementptr inbounds nuw [2 x ptr], ptr %4, i64 0, i64 %indvars.iv %8 = load ptr, ptr %7, align 8, !tbaa !30 @@ -324,20 +324,20 @@ define hidden void @luaS_clearcache(ptr noundef captures(none) %0) local_unnamed %.not = icmp eq i8 %11, 0 br i1 %.not, label %14, label %12 -12: ; preds = %5 +12:; preds = %5 %13 = load ptr, ptr %3, align 8, !tbaa !34 store ptr %13, ptr %7, align 8, !tbaa !30 br label %14 -14: ; preds = %5, %12 +14:; preds = %5, %12 br i1 %6, label %5, label %15 15: ; preds = %14 %indvars.iv.next15 = add nuw nsw i64 %indvars.iv14, 1 %exitcond.not = icmp eq i64 %indvars.iv.next15, 53 - br i1 %exitcond.not, label %16, label %.preheader + br i1 %exitcond.not, label %15, label %.preheader -16: ; preds = %15 +15: ; preds = %15 ret void } @@ -367,9 +367,9 @@ define hidden void @luaS_init(ptr noundef %0) local_unnamed_addr #4 { store ptr %9, ptr %12, align 8, !tbaa !30 %indvars.iv.next22 = add nuw nsw i64 %indvars.iv21, 1 %exitcond.not = icmp eq i64 %indvars.iv.next22, 53 - br i1 %exitcond.not, label %13, label %.preheader + br i1 %exitcond.not, label %12, label %.preheader -13: ; preds = %.preheader +12: ; preds = %.preheader ret void } diff --git a/bench/luau/optimized/AssemblyBuilderX64.ll b/bench/luau/optimized/AssemblyBuilderX64.ll index a94617aef2a..399ec1bc8c5 100644 --- a/bench/luau/optimized/AssemblyBuilderX64.ll +++ b/bench/luau/optimized/AssemblyBuilderX64.ll @@ -2067,8 +2067,8 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan %.sroa.12.0.extract.trunc = trunc nuw i64 %.sroa.12.0.extract.shift to i32 switch i8 %.sroa.0.0.extract.trunc, label %64 [ i8 0, label %3 - i8 1, label %10 - i8 2, label %61 + i8 1, label %9 + i8 2, label %58 ] 3: ; preds = %2 @@ -2081,43 +2081,43 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %9) br label %64 -10: ; preds = %2 - %11 = icmp eq i8 %.sroa.4.0.extract.trunc, 0 - %12 = and i8 %.sroa.9.0.extract.trunc, 15 - %.not18 = icmp eq i8 %12, 0 - br i1 %11, label %13, label %19 +9: ; preds = %2 + %10 = icmp eq i8 %.sroa.4.0.extract.trunc, 0 + %11 = and i8 %.sroa.9.0.extract.trunc, 15 + %.not18 = icmp eq i8 %11, 0 + br i1 %10, label %12, label %18 -13: ; preds = %10 - br i1 %.not18, label %18, label %14 +12: ; preds = %9 + br i1 %.not18, label %17, label %13 -14: ; preds = %13 - %15 = and i64 %.sroa.9.0.extract.shift, 15 - %16 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %15 - %17 = load ptr, ptr %16, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %17) - br label %18 +13: ; preds = %12 + %14 = and i64 %.sroa.9.0.extract.shift, 15 + %15 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %14 + %16 = load ptr, ptr %15, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %16) + br label %17 -18: ; preds = %14, %13 +17: ; preds = %13, %12 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.95, i32 noundef %.sroa.12.0.extract.trunc) - br label %64 + br label %61 -19: ; preds = %10 - br i1 %.not18, label %24, label %20 +18: ; preds = %9 + br i1 %.not18, label %23, label %19 -20: ; preds = %19 - %21 = and i64 %.sroa.9.0.extract.shift, 15 - %22 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %21 - %23 = load ptr, ptr %22, align 8, !tbaa !64 - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %23) - br label %24 +19: ; preds = %18 + %20 = and i64 %.sroa.9.0.extract.shift, 15 + %21 = getelementptr inbounds nuw [7 x ptr], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6411getSizeNameENS1_7SizeX64EE9sizeNames, i64 0, i64 %20 + %22 = load ptr, ptr %21, align 8, !tbaa !64 + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.94, ptr noundef %22) + br label %23 -24: ; preds = %20, %19 +23: ; preds = %19, %18 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.96) %.not25 = icmp eq i8 %.sroa.4.0.extract.trunc, -128 - br i1 %.not25, label %32, label %25 + br i1 %.not25, label %32, label %24 -25: ; preds = %24 - %26 = and i64 %.sroa.4.0.extract.shift, 7 +24: ; preds = %23 + %25 = and i64 %.sroa.4.0.extract.shift, 7 %27 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %26 %28 = lshr i64 %1, 19 %29 = and i64 %28, 31 @@ -2126,12 +2126,12 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.93, ptr noundef %31) br label %32 -32: ; preds = %25, %24 +32:; preds = %25, %24 %33 = and i64 %1, 65280 %.not26 = icmp eq i64 %33, 32768 br i1 %.not26, label %42, label %34 -34: ; preds = %32 +34:; preds = %32 %35 = select i1 %.not25, ptr @.str.99, ptr @.str.98 %36 = and i64 %.sroa.2.0.extract.shift, 7 %37 = getelementptr inbounds nuw [7 x [16 x ptr]], ptr @_ZZNK4Luau7CodeGen3X6418AssemblyBuilderX6415getRegisterNameENS1_11RegisterX64EE5names, i64 0, i64 %36 @@ -2142,69 +2142,69 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX643logENS1_10Operan tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.97, ptr noundef nonnull %35, ptr noundef %41) br label %42 -42: ; preds = %34, %32 +42:; preds = %34, %32 %43 = lshr i8 %.sroa.9.0.extract.trunc, 4 %.not16 = icmp eq i8 %43, 1 br i1 %.not16, label %46, label %44 -44: ; preds = %42 +44: ; preds = %42 %45 = zext nneg i8 %43 to i32 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.100, i32 noundef %45) br label %46 46: ; preds = %44, %42 %.not17 = icmp ult i64 %1, 4294967296 - br i1 %.not17, label %54, label %47 + br i1 %.not17, label %51, label %44 -47: ; preds = %46 +44: ; preds = %46 %or.cond = icmp ult i64 %1, 42949672960 - br i1 %or.cond, label %48, label %49 + br i1 %or.cond, label %45, label %46 -48: ; preds = %47 +45: ; preds = %44 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.101, i32 noundef %.sroa.12.0.extract.trunc) - br label %54 + br label %51 -49: ; preds = %47 - %50 = icmp sgt i32 %.sroa.12.0.extract.trunc, 0 - br i1 %50, label %51, label %52 +46: ; preds = %44 + %47 = icmp sgt i32 %.sroa.12.0.extract.trunc, 0 + br i1 %47, label %48, label %49 -51: ; preds = %49 +48: ; preds = %46 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.102, i32 noundef %.sroa.12.0.extract.trunc) - br label %54 + br label %51 -52: ; preds = %49 - %53 = sub nsw i32 0, %.sroa.12.0.extract.trunc - tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.103, i32 noundef %53) - br label %54 +49: ; preds = %46 + %50 = sub nsw i32 0, %.sroa.12.0.extract.trunc + tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.103, i32 noundef %50) + br label %51 -54: ; preds = %48, %52, %51, %46 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %56 = load i64, ptr %55, align 8, !tbaa !10 - %57 = icmp eq i64 %56, 4611686018427387903 - br i1 %57, label %58, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit +51: ; preds = %45, %49, %48, %46 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %53 = load i64, ptr %52, align 8, !tbaa !10 + %54 = icmp eq i64 %53, 4611686018427387903 + br i1 %54, label %55, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit -58: ; preds = %54 +55: ; preds = %51 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.290) #21 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit: ; preds = %54 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %60 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.104, i64 noundef 1) - br label %64 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit: ; preds = %51 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %57 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.104, i64 noundef 1) + br label %61 -61: ; preds = %2 +58: ; preds = %2 %or.cond5 = icmp ult i64 %1, 42949672960 - br i1 %or.cond5, label %62, label %63 + br i1 %or.cond5, label %59, label %60 -62: ; preds = %61 +59: ; preds = %58 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.105, i32 noundef %.sroa.12.0.extract.trunc) - br label %64 + br label %61 -63: ; preds = %61 +60: ; preds = %58 tail call void (ptr, ptr, ...) @_ZN4Luau7CodeGen3X6418AssemblyBuilderX649logAppendEPKcz(ptr noundef nonnull align 8 dereferenceable(252) %0, ptr noundef nonnull @.str.106, i32 noundef %.sroa.12.0.extract.trunc) - br label %64 + br label %61 -64: ; preds = %2, %62, %63, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit, %18, %3 +61: ; preds = %2, %59, %60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit, %17, %3 ret void } diff --git a/bench/lvgl/optimized/lv_ime_pinyin.ll b/bench/lvgl/optimized/lv_ime_pinyin.ll index d420058ef0f..350eec9046f 100644 --- a/bench/lvgl/optimized/lv_ime_pinyin.ll +++ b/bench/lvgl/optimized/lv_ime_pinyin.ll @@ -1711,9 +1711,9 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 24: ; preds = %11, %14, %22 %.034 = phi i16 [ %5, %14 ], [ %5, %11 ], [ %spec.select, %22 ] - br label %46 + br label %45 -25: ; preds = %46 +25: ; preds = %45 %26 = getelementptr inbounds nuw i8, ptr %0, i64 154 %27 = load i16, ptr %3, align 8, !tbaa !24 %.not47 = icmp eq i16 %27, 0 @@ -1726,80 +1726,80 @@ define internal fastcc void @pinyin_page_proc(ptr noundef captures(none) %0, i16 %30 = zext i16 %29 to i64 br i1 %.not41, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph.split.us: ; preds = %.lr.ph, %33 +.lr.ph.split.us: ; preds = %.lr.ph, %32 %indvars.iv61 = phi i64 [ %indvars.iv.next62, %33 ], [ 0, %.lr.ph ] %31 = mul nuw nsw i64 %indvars.iv61, 3 %32 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv61 br label %39 -33: ; preds = %39 +32: ; preds = %38 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 - %34 = load i16, ptr %3, align 8, !tbaa !24 - %35 = trunc nuw nsw i64 %indvars.iv.next62 to i16 - %36 = icmp ugt i16 %34, %35 - %37 = icmp samesign ult i64 %indvars.iv61, 5 - %38 = and i1 %37, %36 - br i1 %38, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !42 - -39: ; preds = %39, %.lr.ph.split.us + %33 = load i16, ptr %3, align 8, !tbaa !24 + %34 = trunc nuw nsw i64 %indvars.iv.next62 to i16 + %35 = icmp ugt i16 %33, %34 + %36 = icmp samesign ult i64 %indvars.iv61, 5 + %37 = and i1 %36, %35 + br i1 %37, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !42 + +38: ; preds = %38, %.lr.ph.split.us %indvars.iv57 = phi i64 [ %indvars.iv.next58, %39 ], [ 0, %.lr.ph.split.us ] - %40 = load ptr, ptr %7, align 8, !tbaa !41 - %41 = getelementptr inbounds nuw i8, ptr %40, i64 %30 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 %31 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 %indvars.iv57 - %44 = load i8, ptr %43, align 1, !tbaa !8 - %45 = getelementptr inbounds nuw [4 x i8], ptr %32, i64 0, i64 %indvars.iv57 - store i8 %44, ptr %45, align 1, !tbaa !8 + %39 = load ptr, ptr %7, align 8, !tbaa !41 + %40 = getelementptr inbounds nuw i8, ptr %39, i64 %30 + %41 = getelementptr inbounds nuw i8, ptr %40, i64 %31 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 %indvars.iv57 + %43 = load i8, ptr %42, align 1, !tbaa !8 + %44 = getelementptr inbounds nuw [4 x i8], ptr %32, i64 0, i64 %indvars.iv57 + store i8 %43, ptr %44, align 1, !tbaa !8 %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next58, 3 - br i1 %exitcond60.not, label %33, label %39, !llvm.loop !43 + br i1 %exitcond60.not, label %32, label %38, !llvm.loop !43 -46: ; preds = %24, %46 +45: ; preds = %24, %45 %indvars.iv = phi i64 [ 0, %24 ], [ %indvars.iv.next, %46 ] - %47 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv - tail call void @lv_memset(ptr noundef nonnull %47, i8 noundef zeroext 0, i64 noundef 4) #6 - store i8 32, ptr %47, align 4, !tbaa !8 + %46 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv + tail call void @lv_memset(ptr noundef nonnull %46, i8 noundef zeroext 0, i64 noundef 4) #6 + store i8 32, ptr %46, align 4, !tbaa !8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 6 - br i1 %exitcond.not, label %25, label %46, !llvm.loop !44 + br i1 %exitcond.not, label %25, label %45, !llvm.loop !44 .lr.ph.split: ; preds = %.lr.ph, %54 %indvars.iv54 = phi i64 [ %indvars.iv.next55, %54 ], [ 0, %.lr.ph ] - %48 = phi i16 [ %56, %54 ], [ 0, %.lr.ph ] - %49 = load i16, ptr %26, align 2, !tbaa !22 - %50 = icmp ne i16 %49, %.034 - %.not42 = icmp samesign ugt i16 %6, %48 - %or.cond = select i1 %50, i1 true, i1 %.not42 - br i1 %or.cond, label %51, label %.loopexit - -51: ; preds = %.lr.ph.split - %52 = mul nuw nsw i64 %indvars.iv54, 3 + %47 = phi i16 [ %54, %54 ], [ 0, %.lr.ph ] + %48 = load i16, ptr %26, align 2, !tbaa !22 + %49 = icmp ne i16 %48, %.034 + %.not42 = icmp samesign ugt i16 %6, %47 + %or.cond = select i1 %49, i1 true, i1 %.not42 + br i1 %or.cond, label %50, label %.loopexit + +50: ; preds = %.lr.ph.split + %51 = mul nuw nsw i64 %indvars.iv54, 3 %53 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv54 br label %60 54: ; preds = %60 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 - %55 = load i16, ptr %3, align 8, !tbaa !24 - %56 = trunc nuw nsw i64 %indvars.iv.next55 to i16 - %57 = icmp ugt i16 %55, %56 - %58 = icmp samesign ult i64 %indvars.iv54, 5 - %59 = and i1 %58, %57 - br i1 %59, label %.lr.ph.split, label %.loopexit, !llvm.loop !42 - -60: ; preds = %51, %60 - %indvars.iv50 = phi i64 [ 0, %51 ], [ %indvars.iv.next51, %60 ] - %61 = load ptr, ptr %7, align 8, !tbaa !41 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 %30 - %63 = getelementptr inbounds nuw i8, ptr %62, i64 %52 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 %indvars.iv50 - %65 = load i8, ptr %64, align 1, !tbaa !8 - %66 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv50 - store i8 %65, ptr %66, align 1, !tbaa !8 + %53 = load i16, ptr %3, align 8, !tbaa !24 + %54 = trunc nuw nsw i64 %indvars.iv.next55 to i16 + %55 = icmp ugt i16 %53, %54 + %56 = icmp samesign ult i64 %indvars.iv54, 5 + %57 = and i1 %56, %55 + br i1 %57, label %.lr.ph.split, label %.loopexit, !llvm.loop !42 + +58: ; preds = %50, %58 + %indvars.iv50 = phi i64 [ 0, %51 ], [ %indvars.iv.next51, %58 ] + %59 = load ptr, ptr %7, align 8, !tbaa !41 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 %30 + %61 = getelementptr inbounds nuw i8, ptr %60, i64 %51 + %62 = getelementptr inbounds nuw i8, ptr %61, i64 %indvars.iv50 + %63 = load i8, ptr %62, align 1, !tbaa !8 + %64 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv50 + store i8 %63, ptr %64, align 1, !tbaa !8 %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1 %exitcond53.not = icmp eq i64 %indvars.iv.next51, 3 - br i1 %exitcond53.not, label %54, label %60, !llvm.loop !43 + br i1 %exitcond53.not, label %54, label %58, !llvm.loop !43 -.loopexit: ; preds = %.lr.ph.split, %54, %33, %25, %16, %2 +.loopexit: ; preds = %.lr.ph.split, %54, %32, %25, %16, %2 ret void } @@ -1974,7 +1974,7 @@ pinyin_search_matching.exit.thread: ; preds = %._crit_edge.us.thre call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) %38 = getelementptr inbounds nuw i8, ptr %0, i64 112 store ptr null, ptr %38, align 8, !tbaa !41 - br label %68 + br label %67 pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, %.lr.ph.i, %.preheader.lr.ph.i, %.preheader.lr.ph.split.us.i %.us-phi.i = phi ptr [ %16, %.preheader.lr.ph.i ], [ %16, %.preheader.lr.ph.split.us.i ], [ %.02943.us.i, %.lr.ph.i ], [ %.02943.us.i, %._crit_edge.us.i ] @@ -1989,7 +1989,7 @@ pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, % %45 = getelementptr inbounds nuw i8, ptr %0, i64 112 store ptr %44, ptr %45, align 8, !tbaa !41 %46 = icmp eq ptr %44, null - br i1 %46, label %68, label %47 + br i1 %46, label %67, label %47 47: ; preds = %pinyin_search_matching.exit %48 = getelementptr inbounds nuw i8, ptr %0, i64 154 @@ -2010,40 +2010,40 @@ pinyin_search_matching.exit: ; preds = %._crit_edge.us.i, % %exitcond38.not = icmp eq i64 %indvars.iv.next36, 6 br i1 %exitcond38.not, label %.preheader28, label %50, !llvm.loop !49 -.preheader: ; preds = %.preheader28, %56 +.preheader: ; preds = %.preheader28, %55 %indvars.iv44 = phi i64 [ %indvars.iv.next45, %56 ], [ 0, %.preheader28 ] %52 = mul nuw nsw i64 %indvars.iv44, 3 %53 = getelementptr inbounds nuw [6 x [4 x i8]], ptr @lv_pinyin_cand_str, i64 0, i64 %indvars.iv44 br label %62 -._crit_edge: ; preds = %56, %.preheader28 - %54 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %55 = load ptr, ptr %54, align 8, !tbaa !30 - tail call void @lv_obj_remove_flag(ptr noundef %55, i32 noundef 1) #6 - br label %68 +._crit_edge: ; preds = %55, %.preheader28 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %54 = load ptr, ptr %53, align 8, !tbaa !30 + tail call void @lv_obj_remove_flag(ptr noundef %54, i32 noundef 1) #6 + br label %67 -56: ; preds = %62 +55: ; preds = %61 %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 - %57 = load i16, ptr %4, align 8, !tbaa !24 - %58 = trunc nuw nsw i64 %indvars.iv.next45 to i16 - %59 = icmp ugt i16 %57, %58 - %60 = icmp samesign ult i64 %indvars.iv44, 5 - %61 = and i1 %60, %59 - br i1 %61, label %.preheader, label %._crit_edge, !llvm.loop !50 - -62: ; preds = %.preheader, %62 + %56 = load i16, ptr %4, align 8, !tbaa !24 + %57 = trunc nuw nsw i64 %indvars.iv.next45 to i16 + %58 = icmp ugt i16 %56, %57 + %59 = icmp samesign ult i64 %indvars.iv44, 5 + %60 = and i1 %58, %58 + br i1 %60, label %.preheader, label %._crit_edge, !llvm.loop !50 + +61: ; preds = %.preheader, %61 %indvars.iv39 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next40, %62 ] - %63 = load ptr, ptr %45, align 8, !tbaa !41 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 %indvars.iv39 - %65 = getelementptr inbounds nuw i8, ptr %64, i64 %52 - %66 = load i8, ptr %65, align 1, !tbaa !8 - %67 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv39 - store i8 %66, ptr %67, align 1, !tbaa !8 + %62 = load ptr, ptr %45, align 8, !tbaa !41 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 %indvars.iv39 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 %52 + %65 = load i8, ptr %64, align 1, !tbaa !8 + %66 = getelementptr inbounds nuw [4 x i8], ptr %53, i64 0, i64 %indvars.iv39 + store i8 %65, ptr %66, align 1, !tbaa !8 %indvars.iv.next40 = add nuw nsw i64 %indvars.iv39, 1 %exitcond43.not = icmp eq i64 %indvars.iv.next40, 3 - br i1 %exitcond43.not, label %56, label %62, !llvm.loop !51 + br i1 %exitcond43.not, label %55, label %61, !llvm.loop !51 -68: ; preds = %pinyin_search_matching.exit.thread, %pinyin_search_matching.exit, %._crit_edge +67: ; preds = %pinyin_search_matching.exit.thread, %pinyin_search_matching.exit, %._crit_edge ret void } diff --git a/bench/lvgl/optimized/lv_matrix.ll b/bench/lvgl/optimized/lv_matrix.ll index 17c30b5b83d..a26882ccbef 100644 --- a/bench/lvgl/optimized/lv_matrix.ll +++ b/bench/lvgl/optimized/lv_matrix.ll @@ -80,7 +80,7 @@ lv_matrix_is_identity_or_translation.exit: ; preds = %24 %36 = load float, ptr %35, align 4, !tbaa !3 %37 = fadd float %2, %36 store float %37, ptr %35, align 4, !tbaa !3 - br label %66 + br label %65 lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %20, %24, %lv_matrix_is_identity_or_translation.exit call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %5) #9 @@ -104,7 +104,7 @@ lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %2 call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) #9 br label %.preheader.i -.preheader.i: ; preds = %53, %lv_matrix_is_identity_or_translation.exit.thread +.preheader.i: ; preds = %52, %lv_matrix_is_identity_or_translation.exit.thread %indvars.iv22.i = phi i64 [ 0, %lv_matrix_is_identity_or_translation.exit.thread ], [ %indvars.iv.next23.i, %53 ] %46 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %47 = load float, ptr %46, align 4, !tbaa !3 @@ -115,35 +115,35 @@ lv_matrix_is_identity_or_translation.exit.thread: ; preds = %3, %8, %12, %16, %2 %52 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i br label %54 -53: ; preds = %54 +52: ; preds = %53 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -54: ; preds = %54, %.preheader.i +53: ; preds = %53, %.preheader.i %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %54 ] - %55 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i - %56 = load float, ptr %55, align 4, !tbaa !3 - %57 = getelementptr inbounds nuw [3 x float], ptr %40, i64 0, i64 %indvars.iv.i - %58 = load float, ptr %57, align 4, !tbaa !3 - %59 = fmul float %49, %58 - %60 = tail call float @llvm.fmuladd.f32(float %47, float %56, float %59) - %61 = getelementptr inbounds nuw [3 x float], ptr %43, i64 0, i64 %indvars.iv.i - %62 = load float, ptr %61, align 4, !tbaa !3 - %63 = tail call float @llvm.fmuladd.f32(float %51, float %62, float %60) - %64 = getelementptr inbounds nuw [3 x float], ptr %52, i64 0, i64 %indvars.iv.i - store float %63, ptr %64, align 4, !tbaa !3 + %54 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i + %55 = load float, ptr %54, align 4, !tbaa !3 + %56 = getelementptr inbounds nuw [3 x float], ptr %40, i64 0, i64 %indvars.iv.i + %57 = load float, ptr %56, align 4, !tbaa !3 + %58 = fmul float %49, %57 + %59 = tail call float @llvm.fmuladd.f32(float %47, float %55, float %58) + %60 = getelementptr inbounds nuw [3 x float], ptr %43, i64 0, i64 %indvars.iv.i + %61 = load float, ptr %60, align 4, !tbaa !3 + %62 = tail call float @llvm.fmuladd.f32(float %51, float %61, float %59) + %63 = getelementptr inbounds nuw [3 x float], ptr %52, i64 0, i64 %indvars.iv.i + store float %62, ptr %63, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %53, label %54, !llvm.loop !9 + br i1 %exitcond.not.i, label %52, label %53, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %53 - %65 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %52 + %64 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #9 - br label %66 + br label %65 -66: ; preds = %lv_matrix_multiply.exit, %31 +65: ; preds = %lv_matrix_multiply.exit, %31 ret void } @@ -205,7 +205,7 @@ define void @lv_matrix_multiply(ptr noundef %0, ptr noundef readonly captures(no %5 = getelementptr inbounds nuw i8, ptr %1, i64 24 br label %.preheader -.preheader: ; preds = %2, %15 +.preheader: ; preds = %2, %14 %indvars.iv22 = phi i64 [ 0, %2 ], [ %indvars.iv.next23, %15 ] %6 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22 %7 = load float, ptr %6, align 4, !tbaa !3 @@ -216,32 +216,32 @@ define void @lv_matrix_multiply(ptr noundef %0, ptr noundef readonly captures(no %12 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22 br label %16 -13: ; preds = %15 - %14 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 +12: ; preds = %14 + %13 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #9 ret void -15: ; preds = %16 +14: ; preds = %15 %indvars.iv.next23 = add nuw nsw i64 %indvars.iv22, 1 %exitcond25.not = icmp eq i64 %indvars.iv.next23, 3 - br i1 %exitcond25.not, label %13, label %.preheader, !llvm.loop !7 + br i1 %exitcond25.not, label %12, label %.preheader, !llvm.loop !7 -16: ; preds = %.preheader, %16 +15: ; preds = %.preheader, %15 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %16 ] - %17 = getelementptr inbounds nuw [3 x float], ptr %1, i64 0, i64 %indvars.iv - %18 = load float, ptr %17, align 4, !tbaa !3 - %19 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv - %20 = load float, ptr %19, align 4, !tbaa !3 - %21 = fmul float %9, %20 - %22 = tail call float @llvm.fmuladd.f32(float %7, float %18, float %21) - %23 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv - %24 = load float, ptr %23, align 4, !tbaa !3 - %25 = tail call float @llvm.fmuladd.f32(float %11, float %24, float %22) - %26 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv - store float %25, ptr %26, align 4, !tbaa !3 + %16 = getelementptr inbounds nuw [3 x float], ptr %1, i64 0, i64 %indvars.iv + %17 = load float, ptr %16, align 4, !tbaa !3 + %18 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv + %19 = load float, ptr %18, align 4, !tbaa !3 + %20 = fmul float %9, %19 + %21 = tail call float @llvm.fmuladd.f32(float %7, float %17, float %20) + %22 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv + %23 = load float, ptr %22, align 4, !tbaa !3 + %24 = tail call float @llvm.fmuladd.f32(float %11, float %23, float %21) + %25 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv + store float %24, ptr %25, align 4, !tbaa !3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %15, label %16, !llvm.loop !9 + br i1 %exitcond.not, label %14, label %15, !llvm.loop !9 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) @@ -272,8 +272,8 @@ define void @lv_matrix_scale(ptr noundef %0, float noundef %1, float noundef %2) call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) #9 br label %.preheader.i -.preheader.i: ; preds = %21, %3 - %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %21 ] +.preheader.i: ; preds = %20, %3 + %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %20 ] %14 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %15 = load float, ptr %14, align 4, !tbaa !3 %16 = getelementptr inbounds nuw i8, ptr %14, i64 4 @@ -283,30 +283,30 @@ define void @lv_matrix_scale(ptr noundef %0, float noundef %1, float noundef %2) %20 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i br label %22 -21: ; preds = %22 +20: ; preds = %21 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -22: ; preds = %22, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %22 ] - %23 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i - %24 = load float, ptr %23, align 4, !tbaa !3 - %25 = getelementptr inbounds nuw [3 x float], ptr %8, i64 0, i64 %indvars.iv.i - %26 = load float, ptr %25, align 4, !tbaa !3 - %27 = fmul float %17, %26 - %28 = tail call float @llvm.fmuladd.f32(float %15, float %24, float %27) - %29 = getelementptr inbounds nuw [3 x float], ptr %11, i64 0, i64 %indvars.iv.i - %30 = load float, ptr %29, align 4, !tbaa !3 - %31 = tail call float @llvm.fmuladd.f32(float %19, float %30, float %28) - %32 = getelementptr inbounds nuw [3 x float], ptr %20, i64 0, i64 %indvars.iv.i - store float %31, ptr %32, align 4, !tbaa !3 +21: ; preds = %21, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %21 ] + %22 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i + %23 = load float, ptr %22, align 4, !tbaa !3 + %24 = getelementptr inbounds nuw [3 x float], ptr %8, i64 0, i64 %indvars.iv.i + %25 = load float, ptr %24, align 4, !tbaa !3 + %26 = fmul float %17, %25 + %27 = tail call float @llvm.fmuladd.f32(float %15, float %23, float %26) + %28 = getelementptr inbounds nuw [3 x float], ptr %11, i64 0, i64 %indvars.iv.i + %29 = load float, ptr %28, align 4, !tbaa !3 + %30 = tail call float @llvm.fmuladd.f32(float %19, float %29, float %27) + %31 = getelementptr inbounds nuw [3 x float], ptr %20, i64 0, i64 %indvars.iv.i + store float %30, ptr %31, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %21, label %22, !llvm.loop !9 + br i1 %exitcond.not.i, label %20, label %21, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %21 - %33 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %20 + %32 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #9 ret void @@ -342,8 +342,8 @@ define void @lv_matrix_rotate(ptr noundef %0, float noundef %1) local_unnamed_ad call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %3) #9 br label %.preheader.i -.preheader.i: ; preds = %25, %2 - %indvars.iv22.i = phi i64 [ 0, %2 ], [ %indvars.iv.next23.i, %25 ] +.preheader.i: ; preds = %24, %2 + %indvars.iv22.i = phi i64 [ 0, %2 ], [ %indvars.iv.next23.i, %24 ] %18 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %19 = load float, ptr %18, align 4, !tbaa !3 %20 = getelementptr inbounds nuw i8, ptr %18, i64 4 @@ -353,30 +353,30 @@ define void @lv_matrix_rotate(ptr noundef %0, float noundef %1) local_unnamed_ad %24 = getelementptr inbounds nuw [3 x [3 x float]], ptr %3, i64 0, i64 %indvars.iv22.i br label %26 -25: ; preds = %26 +24: ; preds = %25 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -26: ; preds = %26, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %26 ] - %27 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv.i - %28 = load float, ptr %27, align 4, !tbaa !3 - %29 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv.i - %30 = load float, ptr %29, align 4, !tbaa !3 - %31 = fmul float %21, %30 - %32 = tail call float @llvm.fmuladd.f32(float %19, float %28, float %31) - %33 = getelementptr inbounds nuw [3 x float], ptr %15, i64 0, i64 %indvars.iv.i - %34 = load float, ptr %33, align 4, !tbaa !3 - %35 = tail call float @llvm.fmuladd.f32(float %23, float %34, float %32) - %36 = getelementptr inbounds nuw [3 x float], ptr %24, i64 0, i64 %indvars.iv.i - store float %35, ptr %36, align 4, !tbaa !3 +25: ; preds = %25, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %25 ] + %26 = getelementptr inbounds nuw [3 x float], ptr %4, i64 0, i64 %indvars.iv.i + %27 = load float, ptr %26, align 4, !tbaa !3 + %28 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %indvars.iv.i + %29 = load float, ptr %28, align 4, !tbaa !3 + %30 = fmul float %21, %29 + %31 = tail call float @llvm.fmuladd.f32(float %19, float %27, float %30) + %32 = getelementptr inbounds nuw [3 x float], ptr %15, i64 0, i64 %indvars.iv.i + %33 = load float, ptr %32, align 4, !tbaa !3 + %34 = tail call float @llvm.fmuladd.f32(float %23, float %33, float %31) + %35 = getelementptr inbounds nuw [3 x float], ptr %23, i64 0, i64 %indvars.iv.i + store float %34, ptr %35, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %25, label %26, !llvm.loop !9 + br i1 %exitcond.not.i, label %24, label %25, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %25 - %37 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %24 + %36 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 ret void @@ -419,8 +419,8 @@ define void @lv_matrix_skew(ptr noundef %0, float noundef %1, float noundef %2) call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) #9 br label %.preheader.i -.preheader.i: ; preds = %27, %3 - %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %27 ] +.preheader.i: ; preds = %26, %3 + %indvars.iv22.i = phi i64 [ 0, %3 ], [ %indvars.iv.next23.i, %26 ] %20 = getelementptr inbounds nuw [3 x [3 x float]], ptr %0, i64 0, i64 %indvars.iv22.i %21 = load float, ptr %20, align 4, !tbaa !3 %22 = getelementptr inbounds nuw i8, ptr %20, i64 4 @@ -430,30 +430,30 @@ define void @lv_matrix_skew(ptr noundef %0, float noundef %1, float noundef %2) %26 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %indvars.iv22.i br label %28 -27: ; preds = %28 +26: ; preds = %27 %indvars.iv.next23.i = add nuw nsw i64 %indvars.iv22.i, 1 %exitcond25.not.i = icmp eq i64 %indvars.iv.next23.i, 3 br i1 %exitcond25.not.i, label %lv_matrix_multiply.exit, label %.preheader.i, !llvm.loop !7 -28: ; preds = %28, %.preheader.i - %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %28 ] - %29 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i - %30 = load float, ptr %29, align 4, !tbaa !3 - %31 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv.i - %32 = load float, ptr %31, align 4, !tbaa !3 - %33 = fmul float %23, %32 - %34 = tail call float @llvm.fmuladd.f32(float %21, float %30, float %33) - %35 = getelementptr inbounds nuw [3 x float], ptr %17, i64 0, i64 %indvars.iv.i - %36 = load float, ptr %35, align 4, !tbaa !3 - %37 = tail call float @llvm.fmuladd.f32(float %25, float %36, float %34) - %38 = getelementptr inbounds nuw [3 x float], ptr %26, i64 0, i64 %indvars.iv.i - store float %37, ptr %38, align 4, !tbaa !3 +27: ; preds = %27, %.preheader.i + %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %27 ] + %28 = getelementptr inbounds nuw [3 x float], ptr %5, i64 0, i64 %indvars.iv.i + %29 = load float, ptr %28, align 4, !tbaa !3 + %30 = getelementptr inbounds nuw [3 x float], ptr %14, i64 0, i64 %indvars.iv.i + %31 = load float, ptr %30, align 4, !tbaa !3 + %32 = fmul float %23, %31 + %33 = tail call float @llvm.fmuladd.f32(float %21, float %29, float %32) + %34 = getelementptr inbounds nuw [3 x float], ptr %17, i64 0, i64 %indvars.iv.i + %35 = load float, ptr %34, align 4, !tbaa !3 + %36 = tail call float @llvm.fmuladd.f32(float %25, float %35, float %33) + %37 = getelementptr inbounds nuw [3 x float], ptr %26, i64 0, i64 %indvars.iv.i + store float %36, ptr %37, align 4, !tbaa !3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %27, label %28, !llvm.loop !9 + br i1 %exitcond.not.i, label %26, label %27, !llvm.loop !9 -lv_matrix_multiply.exit: ; preds = %27 - %39 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 +lv_matrix_multiply.exit: ; preds = %26 + %38 = call ptr @lv_memcpy(ptr noundef nonnull %0, ptr noundef nonnull %4, i64 noundef 36) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #9 ret void diff --git a/bench/memcached/optimized/thread.ll b/bench/memcached/optimized/thread.ll index e32915a7444..ff752f2d5a3 100644 --- a/bench/memcached/optimized/thread.ll +++ b/bench/memcached/optimized/thread.ll @@ -1131,7 +1131,7 @@ define dso_local void @threadlocal_stats_aggregate(ptr noundef initializes((0, 6 %38 = getelementptr inbounds nuw i8, ptr %0, i64 6440 br label %39 -39: ; preds = %.lr.ph, %218 +39: ; preds = %.lr.ph, %215 %indvars.iv123 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next124, %218 ] %40 = load ptr, ptr @threads, align 8, !tbaa !4 %41 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %40, i64 %indvars.iv123, i32 9 @@ -1290,11 +1290,11 @@ define dso_local void @threadlocal_stats_aggregate(ptr noundef initializes((0, 6 %164 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 31 br label %166 -.preheader: ; preds = %166 +164: ; preds = %166 %165 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9, i32 32 - br label %207 + br label %.preheader -166: ; preds = %39, %166 +166: ; preds = %39, %166 %indvars.iv = phi i64 [ 0, %39 ], [ %indvars.iv.next, %166 ] %167 = getelementptr inbounds nuw [64 x %struct.slab_stats], ptr %164, i64 0, i64 %indvars.iv %168 = load i64, ptr %167, align 8, !tbaa !159 @@ -1348,55 +1348,55 @@ define dso_local void @threadlocal_stats_aggregate(ptr noundef initializes((0, 6 %exitcond.not = icmp eq i64 %indvars.iv.next, 64 br i1 %exitcond.not, label %.preheader, label %166, !llvm.loop !168 -207: ; preds = %.preheader, %207 +.preheader: ; preds = %.preheader, %207 %indvars.iv119 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next120, %207 ] - %208 = getelementptr inbounds nuw [256 x i64], ptr %165, i64 0, i64 %indvars.iv119 - %209 = load i64, ptr %208, align 8, !tbaa !57 - %210 = getelementptr inbounds nuw [256 x i64], ptr %35, i64 0, i64 %indvars.iv119 - %211 = load i64, ptr %210, align 8, !tbaa !57 - %212 = add i64 %211, %209 - store i64 %212, ptr %210, align 8, !tbaa !57 - %213 = load i64, ptr %208, align 8, !tbaa !57 - %214 = shl i64 %indvars.iv119, 6 - %215 = and i64 %214, 4032 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %215 - %216 = load i64, ptr %gep, align 8, !tbaa !161 - %217 = add i64 %216, %213 - store i64 %217, ptr %gep, align 8, !tbaa !161 + %205 = getelementptr inbounds nuw [256 x i64], ptr %165, i64 0, i64 %indvars.iv119 + %206 = load i64, ptr %205, align 8, !tbaa !57 + %207 = getelementptr inbounds nuw [256 x i64], ptr %35, i64 0, i64 %indvars.iv119 + %208 = load i64, ptr %207, align 8, !tbaa !57 + %209 = add i64 %208, %206 + store i64 %209, ptr %207, align 8, !tbaa !57 + %210 = load i64, ptr %205, align 8, !tbaa !57 + %211 = shl i64 %indvars.iv119, 6 + %212 = and i64 %211, 4032 + %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %212 + %213 = load i64, ptr %gep, align 8, !tbaa !161 + %214 = add i64 %213, %210 + store i64 %214, ptr %gep, align 8, !tbaa !161 %indvars.iv.next120 = add nuw nsw i64 %indvars.iv119, 1 %exitcond122.not = icmp eq i64 %indvars.iv.next120, 256 - br i1 %exitcond122.not, label %218, label %207, !llvm.loop !169 - -218: ; preds = %207 - %219 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 12 - %220 = load ptr, ptr %219, align 8, !tbaa !170 - %221 = getelementptr inbounds nuw i8, ptr %220, i64 76 - %222 = load i32, ptr %221, align 4, !tbaa !171 - %223 = sext i32 %222 to i64 - %224 = load i64, ptr %36, align 8, !tbaa !176 - %225 = add i64 %224, %223 - store i64 %225, ptr %36, align 8, !tbaa !176 - %226 = shl nsw i32 %222, 14 - %227 = sext i32 %226 to i64 - %228 = load i64, ptr %37, align 8, !tbaa !177 - %229 = add i64 %228, %227 - store i64 %229, ptr %37, align 8, !tbaa !177 - %230 = getelementptr inbounds nuw i8, ptr %220, i64 80 - %231 = load i32, ptr %230, align 8, !tbaa !178 - %232 = shl nsw i32 %231, 14 - %233 = sext i32 %232 to i64 - %234 = load i64, ptr %38, align 8, !tbaa !179 - %235 = add i64 %234, %233 - store i64 %235, ptr %38, align 8, !tbaa !179 - %236 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9 - %237 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %236) #15 + br i1 %exitcond122.not, label %215, label %.preheader, !llvm.loop !169 + +215: ; preds = %.preheader + %216 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 12 + %217 = load ptr, ptr %216, align 8, !tbaa !170 + %218 = getelementptr inbounds nuw i8, ptr %217, i64 76 + %219 = load i32, ptr %218, align 4, !tbaa !171 + %220 = sext i32 %219 to i64 + %221 = load i64, ptr %36, align 8, !tbaa !176 + %222 = add i64 %221, %220 + store i64 %222, ptr %36, align 8, !tbaa !176 + %223 = shl nsw i32 %219, 14 + %224 = sext i32 %223 to i64 + %225 = load i64, ptr %37, align 8, !tbaa !177 + %226 = add i64 %225, %224 + store i64 %226, ptr %37, align 8, !tbaa !177 + %227 = getelementptr inbounds nuw i8, ptr %217, i64 80 + %228 = load i32, ptr %227, align 8, !tbaa !178 + %229 = shl nsw i32 %228, 14 + %230 = sext i32 %229 to i64 + %231 = load i64, ptr %38, align 8, !tbaa !179 + %232 = add i64 %231, %230 + store i64 %232, ptr %38, align 8, !tbaa !179 + %233 = getelementptr inbounds nuw %struct.LIBEVENT_THREAD, ptr %43, i64 %indvars.iv123, i32 9 + %234 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %233) #15 %indvars.iv.next124 = add nuw nsw i64 %indvars.iv123, 1 - %238 = load i32, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 84), align 4, !tbaa !17 - %239 = sext i32 %238 to i64 - %240 = icmp slt i64 %indvars.iv.next124, %239 - br i1 %240, label %39, label %._crit_edge, !llvm.loop !180 + %235 = load i32, ptr getelementptr inbounds nuw (i8, ptr @settings, i64 84), align 4, !tbaa !17 + %236 = sext i32 %235 to i64 + %237 = icmp slt i64 %indvars.iv.next124, %236 + br i1 %237, label %39, label %._crit_edge, !llvm.loop !180 -._crit_edge: ; preds = %218, %1 +._crit_edge: ; preds = %215, %1 ret void } diff --git a/bench/meshlab/optimized/cubemap.ll b/bench/meshlab/optimized/cubemap.ll index a0fc84b0993..8aa2bcc2c03 100644 --- a/bench/meshlab/optimized/cubemap.ll +++ b/bench/meshlab/optimized/cubemap.ll @@ -146,8 +146,8 @@ _ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit: ; preds = %13 %16 = getelementptr inbounds nuw i8, ptr %0, i64 4 br label %17 -17: ; preds = %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit, %30 - %indvars.iv14 = phi i64 [ 0, %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit ], [ %indvars.iv.next15, %30 ] +17: ; preds = %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit, %29 + %indvars.iv14 = phi i64 [ 0, %_ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit ], [ %indvars.iv.next15, %29 ] %18 = getelementptr inbounds nuw [6 x i32], ptr %16, i64 0, i64 %indvars.iv14 %19 = load i32, ptr %18, align 4 call void @glBindTexture(i32 noundef 3553, i32 noundef %19) @@ -155,29 +155,29 @@ _ZN3vcg12glMultMatrixERKNS_8Matrix44IfEE.exit: ; preds = %13 %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv14 br label %21 -21: ; preds = %17, %21 +21: ; preds = %17, %20 %indvars.iv = phi i64 [ 0, %17 ], [ %indvars.iv.next, %21 ] %22 = getelementptr inbounds nuw [4 x [2 x float]], ptr @_ZL8tex_vert, i64 0, i64 %indvars.iv - %23 = load float, ptr %22, align 8 + %23 = load float, ptr %21, align 8 %24 = getelementptr inbounds nuw i8, ptr %22, i64 4 %25 = load float, ptr %24, align 4 call void @glTexCoord2f(float noundef %23, float noundef %25) %26 = getelementptr inbounds nuw [4 x i32], ptr %20, i64 0, i64 %indvars.iv %27 = load i32, ptr %26, align 4 - %28 = sext i32 %27 to i64 + %28 = sext i32 %26 to i64 %29 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %28 call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %29) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %30, label %21, !llvm.loop !11 + br i1 %exitcond.not, label %29, label %20, !llvm.loop !11 -30: ; preds = %21 +29: ; preds = %20 call void @glEnd() %indvars.iv.next15 = add nuw nsw i64 %indvars.iv14, 1 %exitcond17.not = icmp eq i64 %indvars.iv.next15, 6 - br i1 %exitcond17.not, label %31, label %17, !llvm.loop !12 + br i1 %exitcond17.not, label %30, label %17, !llvm.loop !12 -31: ; preds = %30 +30: ; preds = %29 call void @glDepthMask(i8 noundef zeroext 1) call void @glPopMatrix() call void @glPopAttrib() @@ -255,7 +255,7 @@ _ZNK3vcg8Matrix44IfE9transposeEv.exit.i: ; preds = %18 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 br label %19 -19: ; preds = %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i, %33 +19: ; preds = %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i, %32 %indvars.iv15 = phi i64 [ 0, %_ZNK3vcg8Matrix44IfE9transposeEv.exit.i ], [ %indvars.iv.next16, %33 ] call void @glBegin(i32 noundef 7) %20 = getelementptr inbounds nuw [6 x [4 x i32]], ptr @_ZL10cube_faces, i64 0, i64 %indvars.iv15 @@ -263,35 +263,35 @@ _ZNK3vcg8Matrix44IfE9transposeEv.exit.i: ; preds = %18 _ZN3vcg8glNormalERKNS_6Point3IfEE.exit: ; preds = %19, %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit %indvars.iv = phi i64 [ 0, %19 ], [ %indvars.iv.next, %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit ] - %21 = getelementptr inbounds nuw [4 x i32], ptr %20, i64 0, i64 %indvars.iv - %22 = load i32, ptr %21, align 4 - %23 = sext i32 %22 to i64 - %24 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %23 - %25 = load float, ptr %24, align 4 - %26 = fneg float %25 - %27 = getelementptr inbounds nuw i8, ptr %24, i64 4 - %28 = load float, ptr %27, align 4 - %29 = fneg float %28 - %30 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %31 = load float, ptr %30, align 4 - %32 = fneg float %31 - %.sroa.0.0.vec.insert.i = insertelement <2 x float> poison, float %26, i64 0 - %.sroa.0.4.vec.insert.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i, float %29, i64 1 + %20 = getelementptr inbounds nuw [4 x i32], ptr %20, i64 0, i64 %indvars.iv + %21 = load i32, ptr %20, align 4 + %22 = sext i32 %21 to i64 + %23 = getelementptr inbounds [8 x %"class.vcg::Point3"], ptr @_ZL13cube_vertices, i64 0, i64 %22 + %24 = load float, ptr %23, align 4 + %25 = fneg float %24 + %26 = getelementptr inbounds nuw i8, ptr %23, i64 4 + %27 = load float, ptr %26, align 4 + %28 = fneg float %27 + %29 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %30 = load float, ptr %29, align 4 + %31 = fneg float %30 + %.sroa.0.0.vec.insert.i = insertelement <2 x float> poison, float %25, i64 0 + %.sroa.0.4.vec.insert.i = insertelement <2 x float> %.sroa.0.0.vec.insert.i, float %28, i64 1 store <2 x float> %.sroa.0.4.vec.insert.i, ptr %5, align 8 - store float %32, ptr %.sroa.2.0..sroa_idx, align 8 + store float %31, ptr %.sroa.2.0..sroa_idx, align 8 call void @glNormal3fv(ptr noundef nonnull align 4 dereferenceable(12) %5) - call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %24) + call void @glVertex3fv(ptr noundef nonnull align 4 dereferenceable(12) %23) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %33, label %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit, !llvm.loop !16 + br i1 %exitcond.not, label %32, label %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit, !llvm.loop !16 -33: ; preds = %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit +32: ; preds = %_ZN3vcg8glNormalERKNS_6Point3IfEE.exit call void @glEnd() %indvars.iv.next16 = add nuw nsw i64 %indvars.iv15, 1 %exitcond18.not = icmp eq i64 %indvars.iv.next16, 6 - br i1 %exitcond18.not, label %34, label %19, !llvm.loop !17 + br i1 %exitcond18.not, label %33, label %19, !llvm.loop !17 -34: ; preds = %33 +33: ; preds = %32 call void @glMatrixMode(i32 noundef 5890) call void @glPopMatrix() call void @glMatrixMode(i32 noundef 5888) diff --git a/bench/meshlab/optimized/filter_layer.ll b/bench/meshlab/optimized/filter_layer.ll index a43802da4f3..e8643025a5c 100644 --- a/bench/meshlab/optimized/filter_layer.ll +++ b/bench/meshlab/optimized/filter_layer.ll @@ -26623,7 +26623,7 @@ define linkonce_odr void @_ZN3vcg3tri6AppendI6CMeshOS2_E13ImportFaceAdjERS2_RKS2 %16 = ptrtoint ptr %2 to i64 br label %17 -17: ; preds = %.preheader74, %71 +17: ; preds = %.preheader74, %69 %indvars.iv = phi i64 [ 0, %.preheader74 ], [ %indvars.iv.next, %71 ] %18 = load ptr, ptr %3, align 8 %19 = getelementptr inbounds nuw i8, ptr %18, i64 273 @@ -26654,7 +26654,7 @@ _ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %38 = getelementptr inbounds i8, ptr %36, i64 %37 %39 = load i64, ptr %38, align 8 %.not = icmp eq i64 %39, -1 - br i1 %.not, label %71, label %40 + br i1 %.not, label %69, label %40 40: ; preds = %_ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfEEEE4cFFpEi.exit %41 = load ptr, ptr %15, align 8 @@ -26691,71 +26691,71 @@ _ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 store i8 %61, ptr %70, align 1 br label %71 -71: ; preds = %_ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfEEEE4cFFpEi.exit, %40 +69: ; preds = %_ZNK3vcg4face8FFAdjOcfINS_6Arity7INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfEEEE4cFFpEi.exit, %40 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %.loopexit75, label %17, !llvm.loop !235 -.loopexit75: ; preds = %71, %5 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 576 - %73 = load i8, ptr %72, align 8 - %74 = trunc i8 %73 to i1 - %75 = getelementptr inbounds nuw i8, ptr %1, i64 576 - %76 = load i8, ptr %75, align 8 - %77 = trunc i8 %76 to i1 - %or.cond73 = select i1 %74, i1 %77, i1 false +.loopexit75: ; preds = %69, %5 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 576 + %71 = load i8, ptr %70, align 8 + %72 = trunc i8 %71 to i1 + %73 = getelementptr inbounds nuw i8, ptr %1, i64 576 + %74 = load i8, ptr %73, align 8 + %75 = trunc i8 %74 to i1 + %or.cond73 = select i1 %72, i1 %75, i1 false br i1 %or.cond73, label %.preheader, label %.loopexit .preheader: ; preds = %.loopexit75 - %78 = ptrtoint ptr %3 to i64 - %79 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %80 = getelementptr inbounds nuw i8, ptr %1, i64 304 - %81 = getelementptr inbounds nuw i8, ptr %0, i64 304 - %82 = ptrtoint ptr %2 to i64 - br label %83 - -83: ; preds = %.preheader, %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit + %76 = ptrtoint ptr %3 to i64 + %77 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %78 = getelementptr inbounds nuw i8, ptr %1, i64 304 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 304 + %80 = ptrtoint ptr %2 to i64 + br label %81 + +81: ; preds = %.preheader, %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit %indvars.iv79 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next80, %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit ] - %84 = load ptr, ptr %3, align 8 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 272 - %86 = load i8, ptr %85, align 8 - %87 = trunc i8 %86 to i1 - br i1 %87, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge - -_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit: ; preds = %83 - %.pre = load ptr, ptr %84, align 8 - %88 = getelementptr inbounds nuw i8, ptr %84, i64 216 - %89 = ptrtoint ptr %.pre to i64 - %90 = sub i64 %78, %89 - %91 = sdiv exact i64 %90, 48 - %92 = load ptr, ptr %88, align 8 - %93 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %92, i64 %91 - %94 = getelementptr inbounds nuw [3 x ptr], ptr %93, i64 0, i64 %indvars.iv79 - %95 = load ptr, ptr %94, align 8 - %96 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %92, i64 %91, i32 1 - %97 = getelementptr inbounds nuw [3 x i8], ptr %96, i64 0, i64 %indvars.iv79 + %82 = load ptr, ptr %3, align 8 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 272 + %84 = load i8, ptr %83, align 8 + %85 = trunc i8 %84 to i1 + br i1 %85, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge + +_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit: ; preds = %81 + %.pre = load ptr, ptr %82, align 8 + %86 = getelementptr inbounds nuw i8, ptr %82, i64 216 + %87 = ptrtoint ptr %.pre to i64 + %88 = sub i64 %76, %87 + %89 = sdiv exact i64 %88, 48 + %90 = load ptr, ptr %86, align 8 + %91 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %90, i64 %89 + %92 = getelementptr inbounds nuw [3 x ptr], ptr %91, i64 0, i64 %indvars.iv79 + %93 = load ptr, ptr %92, align 8 + %94 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %90, i64 %89, i32 1 + %97 = getelementptr inbounds nuw [3 x i8], ptr %94, i64 0, i64 %indvars.iv79 %98 = load i8, ptr %97, align 1 %99 = icmp eq ptr %95, null br i1 %99, label %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, label %100 -_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge: ; preds = %83, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit +_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge: ; preds = %81, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit %.pre84 = load ptr, ptr %2, align 8 br label %.thread -100: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit - %101 = load ptr, ptr %80, align 8 - %102 = ptrtoint ptr %95 to i64 - %103 = ptrtoint ptr %101 to i64 - %104 = sub i64 %102, %103 - %105 = load ptr, ptr %79, align 8 - %106 = sdiv exact i64 %104, 6 - %107 = getelementptr inbounds i8, ptr %105, i64 %106 - %108 = load i64, ptr %107, align 8 - %109 = icmp eq i64 %108, -1 +97: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit + %98 = load ptr, ptr %78, align 8 + %99 = ptrtoint ptr %93 to i64 + %100 = ptrtoint ptr %98 to i64 + %101 = sub i64 %99, %100 + %102 = load ptr, ptr %77, align 8 + %103 = sdiv exact i64 %101, 6 + %104 = getelementptr inbounds i8, ptr %102, i64 %103 + %105 = load i64, ptr %104, align 8 + %106 = icmp eq i64 %105, -1 %.pre85 = load ptr, ptr %2, align 8 - br i1 %109, label %.thread, label %122 + br i1 %106, label %.thread, label %118 -.thread: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, %100 +116: ; preds = %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge, %97 %110 = phi ptr [ %.pre84, %_ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9VertexRefENS0_8BitFlagsENS0_8Normal3mENS0_11QualitymOcfENS0_7MarkOcfENS0_10Color4bOcfENS0_8FFAdjOcfEEEE4cVFpEi.exit..thread_crit_edge ], [ %.pre85, %100 ] %111 = getelementptr inbounds nuw i8, ptr %110, i64 216 %112 = load ptr, ptr %110, align 8 @@ -26773,40 +26773,40 @@ _ZNK3vcg4face8VFAdjOcfINS_6Arity8INS_8FaceBaseI11CUsedTypesOEENS0_7InfoOcfENS0_9 %121 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %116, i64 %115 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split -122: ; preds = %100 - %123 = load ptr, ptr %81, align 8 - %124 = getelementptr inbounds %class.CFaceO, ptr %123, i64 %108 - %125 = getelementptr inbounds nuw i8, ptr %.pre85, i64 216 - %126 = load ptr, ptr %.pre85, align 8 - %127 = ptrtoint ptr %126 to i64 - %128 = sub i64 %82, %127 - %129 = sdiv exact i64 %128, 48 - %130 = load ptr, ptr %125, align 8 - %131 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %130, i64 %129 +118: ; preds = %97 + %119 = load ptr, ptr %79, align 8 + %120 = getelementptr inbounds %class.CFaceO, ptr %119, i64 %105 + %121 = getelementptr inbounds nuw i8, ptr %.pre85, i64 216 + %122 = load ptr, ptr %.pre85, align 8 + %123 = ptrtoint ptr %122 to i64 + %124 = sub i64 %80, %123 + %125 = sdiv exact i64 %124, 48 + %126 = load ptr, ptr %121, align 8 + %127 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %126, i64 %125 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split -_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split: ; preds = %122, %120 - %.sink105 = phi ptr [ %121, %120 ], [ %131, %122 ] - %.sink103 = phi ptr [ null, %120 ], [ %124, %122 ] +_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split: ; preds = %118, %120 + %.sink104 = phi ptr [ %121, %120 ], [ %127, %122 ] + %.sink102 = phi ptr [ null, %120 ], [ %120, %122 ] %.sink = phi i8 [ -1, %120 ], [ %98, %122 ] - %132 = getelementptr inbounds nuw [3 x ptr], ptr %.sink105, i64 0, i64 %indvars.iv79 - store ptr %.sink103, ptr %132, align 8 - %133 = load ptr, ptr %2, align 8 - %134 = getelementptr inbounds nuw i8, ptr %133, i64 216 - %135 = load ptr, ptr %133, align 8 - %136 = ptrtoint ptr %135 to i64 - %137 = sub i64 %82, %136 - %138 = sdiv exact i64 %137, 48 - %139 = load ptr, ptr %134, align 8 - %140 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %139, i64 %138, i32 1 - %141 = getelementptr inbounds nuw [3 x i8], ptr %140, i64 0, i64 %indvars.iv79 + %128 = getelementptr inbounds nuw [3 x ptr], ptr %.sink104, i64 0, i64 %indvars.iv79 + store ptr %.sink102, ptr %128, align 8 + %129 = load ptr, ptr %2, align 8 + %130 = getelementptr inbounds nuw i8, ptr %129, i64 216 + %131 = load ptr, ptr %129, align 8 + %132 = ptrtoint ptr %131 to i64 + %133 = sub i64 %80, %132 + %134 = sdiv exact i64 %133, 48 + %135 = load ptr, ptr %130, align 8 + %136 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %135, i64 %134, i32 1 + %141 = getelementptr inbounds nuw [3 x i8], ptr %136, i64 0, i64 %indvars.iv79 store i8 %.sink, ptr %141, align 1 br label %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit _ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit: ; preds = %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit.sink.split, %.thread %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 %exitcond82.not = icmp eq i64 %indvars.iv.next80, 3 - br i1 %exitcond82.not, label %.loopexit, label %83, !llvm.loop !236 + br i1 %exitcond82.not, label %.loopexit, label %81, !llvm.loop !236 .loopexit: ; preds = %_ZN3vcg4face9EmptyCoreINS_14FaceTypeHolderI11CUsedTypesOEEE7VFClearEi.exit, %.loopexit75 ret void diff --git a/bench/meshlab/optimized/mesh_model.ll b/bench/meshlab/optimized/mesh_model.ll index 45a4fa7b7e7..8530a2c119a 100644 --- a/bench/meshlab/optimized/mesh_model.ll +++ b/bench/meshlab/optimized/mesh_model.ll @@ -4639,9 +4639,9 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd %.sroa.028.0.ph = phi ptr [ %8, %7 ], [ %.pre, %.noexc._ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit_crit_edge ] br label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit -_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader, %105 - %19 = phi ptr [ %106, %105 ], [ %.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] - %.sroa.023.0 = phi ptr [ %108, %105 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] +_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader, %103 + %19 = phi ptr [ %104, %105 ], [ %.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] + %.sroa.023.0 = phi ptr [ %106, %105 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] %.sroa.028.0 = phi ptr [ %.sroa.028.1, %105 ], [ %.sroa.028.0.ph, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.preheader ] %20 = icmp eq ptr %.sroa.023.0, %19 br i1 %20, label %.critedge, label %21 @@ -4656,7 +4656,7 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd %28 = load ptr, ptr %27, align 8 %29 = icmp eq ptr %26, %28 %30 = select i1 %24, i1 %29, i1 false - br i1 %30, label %105, label %.critedge + br i1 %30, label %103, label %.critedge .critedge: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit, %21 %31 = getelementptr inbounds i8, ptr %.sroa.023.0, i64 -32 @@ -4704,77 +4704,77 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEd %67 = icmp ult ptr %33, %31 br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !50 -68: ; preds = %.noexc, %11, %6 +68:; preds = %.noexc, %11, %6 %69 = landingpad { ptr, i32 } cleanup - %70 = load ptr, ptr %2, align 8 - %.not.i.i.i = icmp eq ptr %70, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit, label %71 + %69 = load ptr, ptr %2, align 8 + %.not.i.i.i = icmp eq ptr %69, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit, label %70 -71: ; preds = %68 - call void @_ZdlPv(ptr noundef nonnull %70) #29 +70: ; preds = %68 + call void @_ZdlPv(ptr noundef nonnull %69) #29 br label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit -_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit: ; preds = %68, %71 +_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit: ; preds = %68, %70 resume { ptr, i32 } %69 ._crit_edge: ; preds = %.lr.ph, %.critedge %.sroa.012.0.lcssa = phi ptr [ %.sroa.028.0, %.critedge ], [ %33, %.lr.ph ] - %72 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 16 - %73 = load ptr, ptr %72, align 8 - %74 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 16 - %75 = load ptr, ptr %74, align 8 - %76 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 24 - %77 = load i32, ptr %76, align 8 - %78 = load ptr, ptr %75, align 8 - %79 = getelementptr inbounds nuw i8, ptr %78, i64 240 - %80 = load ptr, ptr %78, align 8 - %81 = ptrtoint ptr %75 to i64 - %82 = ptrtoint ptr %80 to i64 - %83 = sub i64 %81, %82 - %84 = sdiv exact i64 %83, 48 - %85 = load ptr, ptr %79, align 8 - %86 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %85, i64 %84 - %87 = sext i32 %77 to i64 - %88 = getelementptr inbounds [3 x ptr], ptr %86, i64 0, i64 %87 - store ptr %73, ptr %88, align 8 - %89 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 24 - %90 = load i32, ptr %89, align 8 - %91 = trunc i32 %90 to i8 - %92 = load ptr, ptr %74, align 8 - %93 = load i32, ptr %76, align 8 - %94 = load ptr, ptr %92, align 8 - %95 = getelementptr inbounds nuw i8, ptr %94, i64 240 - %96 = load ptr, ptr %94, align 8 - %97 = ptrtoint ptr %92 to i64 - %98 = ptrtoint ptr %96 to i64 - %99 = sub i64 %97, %98 - %100 = sdiv exact i64 %99, 48 - %101 = load ptr, ptr %95, align 8 - %102 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %101, i64 %100, i32 1 + %71 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 16 + %72 = load ptr, ptr %71, align 8 + %73 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 16 + %74 = load ptr, ptr %73, align 8 + %75 = getelementptr inbounds nuw i8, ptr %.sroa.012.0.lcssa, i64 24 + %76 = load i32, ptr %75, align 8 + %77 = load ptr, ptr %74, align 8 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 240 + %79 = load ptr, ptr %77, align 8 + %80 = ptrtoint ptr %74 to i64 + %81 = ptrtoint ptr %79 to i64 + %82 = sub i64 %80, %81 + %83 = sdiv exact i64 %82, 48 + %84 = load ptr, ptr %78, align 8 + %85 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %84, i64 %83 + %86 = sext i32 %76 to i64 + %87 = getelementptr inbounds [3 x ptr], ptr %85, i64 0, i64 %86 + store ptr %72, ptr %87, align 8 + %88 = getelementptr inbounds nuw i8, ptr %.sroa.028.0, i64 24 + %89 = load i32, ptr %88, align 8 + %90 = trunc i32 %89 to i8 + %91 = load ptr, ptr %73, align 8 + %92 = load i32, ptr %75, align 8 + %93 = load ptr, ptr %91, align 8 + %94 = getelementptr inbounds nuw i8, ptr %93, i64 240 + %95 = load ptr, ptr %93, align 8 + %96 = ptrtoint ptr %91 to i64 + %97 = ptrtoint ptr %95 to i64 + %98 = sub i64 %96, %97 + %99 = sdiv exact i64 %98, 48 + %100 = load ptr, ptr %94, align 8 + %102 = getelementptr inbounds %"struct.vcg::face::vector_ocf::AdjTypePack", ptr %99, i64 %99, i32 1 %103 = sext i32 %93 to i64 %104 = getelementptr inbounds [3 x i8], ptr %102, i64 0, i64 %103 store i8 %91, ptr %104, align 1 %.pre33 = load ptr, ptr %9, align 8 - br label %105 + br label %103 -105: ; preds = %._crit_edge, %21 - %106 = phi ptr [ %.pre33, %._crit_edge ], [ %19, %21 ] +103: ; preds = %._crit_edge, %21 + %104 = phi ptr [ %.pre33, %._crit_edge ], [ %19, %21 ] %.sroa.028.1 = phi ptr [ %.sroa.023.0, %._crit_edge ], [ %.sroa.028.0, %21 ] - %107 = icmp eq ptr %.sroa.023.0, %106 - %108 = getelementptr inbounds nuw i8, ptr %.sroa.023.0, i64 32 - br i1 %107, label %109, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit, !llvm.loop !51 + %105 = icmp eq ptr %.sroa.023.0, %104 + %106 = getelementptr inbounds nuw i8, ptr %.sroa.023.0, i64 32 + br i1 %105, label %107, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit, !llvm.loop !51 -109: ; preds = %105 - %110 = load ptr, ptr %2, align 8 - %.not.i.i.i6 = icmp eq ptr %110, null - br i1 %.not.i.i.i6, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7, label %111 +107: ; preds = %103 + %108 = load ptr, ptr %2, align 8 + %.not.i.i.i6 = icmp eq ptr %108, null + br i1 %.not.i.i.i6, label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7, label %109 -111: ; preds = %109 - call void @_ZdlPv(ptr noundef nonnull %110) #29 +109: ; preds = %107 + call void @_ZdlPv(ptr noundef nonnull %108) #29 br label %_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7 -_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7: ; preds = %111, %109, %1 +_ZNSt6vectorIN3vcg3tri14UpdateTopologyI6CMeshOE5PEdgeESaIS5_EED2Ev.exit7: ; preds = %109, %107, %1 ret void } @@ -4828,8 +4828,8 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( br i1 %.not3439, label %._crit_edge43, label %.lr.ph42 .lr.ph42: ; preds = %._crit_edge, %.loopexit - %32 = phi ptr [ %108, %.loopexit ], [ %31, %._crit_edge ] - %.sroa.018.040 = phi ptr [ %109, %.loopexit ], [ %29, %._crit_edge ] + %32 = phi ptr [ %107, %.loopexit ], [ %31, %._crit_edge ] + %.sroa.018.040 = phi ptr [ %108, %.loopexit ], [ %29, %._crit_edge ] %33 = getelementptr inbounds nuw i8, ptr %.sroa.018.040, i64 32 %34 = load i32, ptr %33, align 8 %35 = and i32 %34, 1 @@ -4894,7 +4894,7 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( store i8 %74, ptr %83, align 1 %84 = load ptr, ptr %39, align 8 %85 = load ptr, ptr %84, align 8 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 216 + %86 = getelementptr inbounds nuw i8, ptr %84, i64 216 %87 = load ptr, ptr %85, align 8 %88 = ptrtoint ptr %84 to i64 %89 = ptrtoint ptr %87 to i64 @@ -4907,8 +4907,8 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( store ptr %.sroa.018.040, ptr %94, align 8 %95 = load ptr, ptr %39, align 8 %96 = load ptr, ptr %95, align 8 - %97 = getelementptr inbounds nuw i8, ptr %96, i64 216 - %98 = load ptr, ptr %96, align 8 + %97 = getelementptr inbounds nuw i8, ptr %95, i64 216 + %98 = load ptr, ptr %94, align 8 %99 = ptrtoint ptr %95 to i64 %100 = ptrtoint ptr %98 to i64 %101 = sub i64 %99, %100 @@ -4929,9 +4929,9 @@ define linkonce_odr void @_ZN3vcg3tri14UpdateTopologyI6CMeshOE10VertexFaceERS2_( br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %.lr.ph42 - %108 = phi ptr [ %.pre, %.loopexit.loopexit ], [ %32, %.lr.ph42 ] - %109 = getelementptr inbounds nuw i8, ptr %.sroa.018.040, i64 48 - %.not34 = icmp eq ptr %109, %108 + %107 = phi ptr [ %.pre, %.loopexit.loopexit ], [ %32, %.lr.ph42 ] + %108 = getelementptr inbounds nuw i8, ptr %.sroa.018.040, i64 48 + %.not34 = icmp eq ptr %108, %107 br i1 %.not34, label %._crit_edge43, label %.lr.ph42, !llvm.loop !54 ._crit_edge43: ; preds = %.loopexit, %._crit_edge diff --git a/bench/meshoptimizer/optimized/spatialorder.ll b/bench/meshoptimizer/optimized/spatialorder.ll index 252bacbfe54..9c82048334d 100644 --- a/bench/meshoptimizer/optimized/spatialorder.ll +++ b/bench/meshoptimizer/optimized/spatialorder.ll @@ -31,7 +31,7 @@ define dso_local void @meshopt_spatialSortRemap(ptr noundef captures(none) %0, p %11 = shl nuw i64 %2, 2 %12 = select i1 %10, i64 -1, i64 %11 %13 = invoke noundef ptr %9(i64 noundef %12) - to label %14 unwind label %178 + to label %14 unwind label %179 14: ; preds = %4 %15 = getelementptr inbounds nuw i8, ptr %7, i64 192 @@ -239,15 +239,15 @@ define dso_local void @meshopt_spatialSortRemap(ptr noundef captures(none) %0, p _ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit: ; preds = %.preheader.i %135 = load ptr, ptr @_ZN17meshopt_Allocator8StorageTIvE8allocateE, align 8, !tbaa !4 %136 = invoke noundef ptr %135(i64 noundef %12) - to label %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 unwind label %180 + to label %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 unwind label %181 _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit %137 = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %136, ptr %137, align 8, !tbaa !4 - br i1 %.not.i, label %._crit_edge68, label %.lr.ph + br i1 %.not.i, label %._crit_edge65, label %.lr.ph .lr.ph.i46: ; preds = %.lr.ph, %.lr.ph.i46 - %.013.i = phi i64 [ %149, %.lr.ph.i46 ], [ 0, %.lr.ph ] + %.013.i = phi i64 [ %150, %.lr.ph.i46 ], [ 0, %.lr.ph ] %138 = getelementptr inbounds nuw i32, ptr %0, i64 %.013.i %139 = load i32, ptr %138, align 4, !tbaa !16 %140 = zext i32 %139 to i64 @@ -255,15 +255,15 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %142 = load i32, ptr %141, align 4, !tbaa !16 %143 = and i32 %142, 1023 %144 = zext nneg i32 %143 to i64 - %gep.i = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %144 - %145 = load i32, ptr %gep.i, align 4, !tbaa !16 - %146 = add i32 %145, 1 - store i32 %146, ptr %gep.i, align 4, !tbaa !16 - %147 = zext i32 %145 to i64 - %148 = getelementptr inbounds nuw i32, ptr %136, i64 %147 - store i32 %139, ptr %148, align 4, !tbaa !16 - %149 = add nuw i64 %.013.i, 1 - %exitcond.not.i47 = icmp eq i64 %149, %2 + %145 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %8, i64 0, i64 %144 + %146 = load i32, ptr %145, align 4, !tbaa !16 + %147 = add i32 %146, 1 + store i32 %147, ptr %145, align 4, !tbaa !16 + %148 = zext i32 %146 to i64 + %149 = getelementptr inbounds nuw i32, ptr %136, i64 %148 + store i32 %139, ptr %149, align 4, !tbaa !16 + %150 = add nuw i64 %.013.i, 1 + %exitcond.not.i47 = icmp eq i64 %150, %2 br i1 %exitcond.not.i47, label %.lr.ph.i50, label %.lr.ph.i46, !llvm.loop !21 .lr.ph.i50: ; preds = %.lr.ph.i46 @@ -280,18 +280,18 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %156 = lshr i32 %155, 10 %157 = and i32 %156, 1023 %158 = zext nneg i32 %157 to i64 - %gep.i52 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i, i64 0, i64 %158 - %159 = load i32, ptr %gep.i52, align 4, !tbaa !16 - %160 = add i32 %159, 1 - store i32 %160, ptr %gep.i52, align 4, !tbaa !16 - %161 = zext i32 %159 to i64 - %162 = getelementptr inbounds nuw i32, ptr %0, i64 %161 - store i32 %152, ptr %162, align 4, !tbaa !16 - %163 = add nuw i64 %.013.i51, 1 - %exitcond.not.i53 = icmp eq i64 %163, %2 - br i1 %exitcond.not.i53, label %.lr.ph.i57, label %150, !llvm.loop !21 - -.lr.ph.i57: ; preds = %150 + %159 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i, i64 0, i64 %158 + %160 = load i32, ptr %159, align 4, !tbaa !16 + %161 = add i32 %160, 1 + store i32 %161, ptr %159, align 4, !tbaa !16 + %162 = zext i32 %160 to i64 + %163 = getelementptr inbounds nuw i32, ptr %0, i64 %162 + store i32 %152, ptr %163, align 4, !tbaa !16 + %164 = add nuw i64 %.013.i51, 1 + %exitcond.not.i52 = icmp eq i64 %164, %2 + br i1 %exitcond.not.i52, label %.lr.ph.i56, label %150, !llvm.loop !21 + +.lr.ph.i56: ; preds = %150 %invariant.gep.i58 = getelementptr inbounds nuw i8, ptr %8, i64 8 br label %164 @@ -305,79 +305,79 @@ _ZN17meshopt_Allocator8allocateIjEEPT_m.exit44: ; preds = %_ZN7meshoptL16compu %170 = lshr i32 %169, 20 %171 = and i32 %170, 1023 %172 = zext nneg i32 %171 to i64 - %gep.i60 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i58, i64 0, i64 %172 - %173 = load i32, ptr %gep.i60, align 4, !tbaa !16 - %174 = add i32 %173, 1 - store i32 %174, ptr %gep.i60, align 4, !tbaa !16 - %175 = zext i32 %173 to i64 - %176 = getelementptr inbounds nuw i32, ptr %136, i64 %175 - store i32 %166, ptr %176, align 4, !tbaa !16 - %177 = add nuw i64 %.013.i59, 1 - %exitcond.not.i61 = icmp eq i64 %177, %2 - br i1 %exitcond.not.i61, label %.lr.ph67, label %164, !llvm.loop !21 - -178: ; preds = %4 - %179 = landingpad { ptr, i32 } + %173 = getelementptr inbounds nuw [1024 x [3 x i32]], ptr %invariant.gep.i58, i64 0, i64 %172 + %174 = load i32, ptr %173, align 4, !tbaa !16 + %175 = add i32 %174, 1 + store i32 %175, ptr %173, align 4, !tbaa !16 + %176 = zext i32 %174 to i64 + %177 = getelementptr inbounds nuw i32, ptr %136, i64 %176 + store i32 %166, ptr %177, align 4, !tbaa !16 + %178 = add nuw i64 %.013.i59, 1 + %exitcond.not.i58 = icmp eq i64 %178, %2 + br i1 %exitcond.not.i58, label %.lr.ph64, label %164, !llvm.loop !21 + +179: ; preds = %4 + %180 = landingpad { ptr, i32 } cleanup - br label %200 + br label %201 -180: ; preds = %_ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit - %181 = landingpad { ptr, i32 } +181: ; preds = %_ZN7meshoptL16computeHistogramERA1024_A3_jPKjm.exit + %182 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 12288, ptr nonnull %8) #10 - br label %200 + br label %201 .lr.ph: ; preds = %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44, %.lr.ph - %.03465 = phi i64 [ %184, %.lr.ph ], [ 0, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 ] - %182 = trunc i64 %.03465 to i32 - %183 = getelementptr inbounds nuw i32, ptr %0, i64 %.03465 - store i32 %182, ptr %183, align 4, !tbaa !16 - %184 = add nuw i64 %.03465, 1 - %exitcond.not = icmp eq i64 %184, %2 + %.03462 = phi i64 [ %185, %.lr.ph ], [ 0, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 ] + %183 = trunc i64 %.03462 to i32 + %184 = getelementptr inbounds nuw i32, ptr %0, i64 %.03462 + store i32 %183, ptr %184, align 4, !tbaa !16 + %185 = add nuw i64 %.03462, 1 + %exitcond.not = icmp eq i64 %185, %2 br i1 %exitcond.not, label %.lr.ph.i46, label %.lr.ph, !llvm.loop !22 -._crit_edge68: ; preds = %.lr.ph67, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 +._crit_edge65: ; preds = %.lr.ph64, %_ZN17meshopt_Allocator8allocateIjEEPT_m.exit44 call void @llvm.lifetime.end.p0(i64 12288, ptr nonnull %8) #10 - br label %185 - -185: ; preds = %186, %._crit_edge68 - %.0.i = phi i64 [ 2, %._crit_edge68 ], [ %188, %186 ] - %.not.i64 = icmp eq i64 %.0.i, 0 - br i1 %.not.i64, label %_ZN17meshopt_AllocatorD2Ev.exit, label %186 - -186: ; preds = %185 - %187 = load ptr, ptr @_ZN17meshopt_Allocator8StorageTIvE10deallocateE, align 8, !tbaa !4 - %188 = add i64 %.0.i, -1 - %189 = getelementptr inbounds nuw [24 x ptr], ptr %7, i64 0, i64 %188 - %190 = load ptr, ptr %189, align 8, !tbaa !4 - invoke void %187(ptr noundef %190) - to label %185 unwind label %191, !llvm.loop !23 - -191: ; preds = %186 - %192 = landingpad { ptr, i32 } + br label %186 + +186: ; preds = %187, %._crit_edge65 + %.0.i = phi i64 [ 2, %._crit_edge68 ], [ %189, %186 ] + %.not.i61 = icmp eq i64 %.0.i, 0 + br i1 %.not.i61, label %_ZN17meshopt_AllocatorD2Ev.exit, label %187 + +187: ; preds = %186 + %188 = load ptr, ptr @_ZN17meshopt_Allocator8StorageTIvE10deallocateE, align 8, !tbaa !4 + %189 = add i64 %.0.i, -1 + %190 = getelementptr inbounds nuw [24 x ptr], ptr %7, i64 0, i64 %189 + %191 = load ptr, ptr %190, align 8, !tbaa !4 + invoke void %187(ptr noundef %191) + to label %185 unwind label %192, !llvm.loop !23 + +192: ; preds = %187 + %193 = landingpad { ptr, i32 } catch ptr null - %193 = extractvalue { ptr, i32 } %192, 0 - tail call void @__clang_call_terminate(ptr %193) #11 + %194 = extractvalue { ptr, i32 } %193, 0 + tail call void @__clang_call_terminate(ptr %194) #11 unreachable -_ZN17meshopt_AllocatorD2Ev.exit: ; preds = %185 +_ZN17meshopt_AllocatorD2Ev.exit: ; preds = %186 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %7) #10 ret void -.lr.ph67: ; preds = %164, %.lr.ph67 - %.066 = phi i64 [ %199, %.lr.ph67 ], [ 0, %164 ] - %194 = trunc i64 %.066 to i32 - %195 = getelementptr inbounds nuw i32, ptr %136, i64 %.066 - %196 = load i32, ptr %195, align 4, !tbaa !16 - %197 = zext i32 %196 to i64 - %198 = getelementptr inbounds nuw i32, ptr %0, i64 %197 - store i32 %194, ptr %198, align 4, !tbaa !16 - %199 = add nuw i64 %.066, 1 - %exitcond70.not = icmp eq i64 %199, %2 - br i1 %exitcond70.not, label %._crit_edge68, label %.lr.ph67, !llvm.loop !24 - -200: ; preds = %180, %178 - %.pn = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ] +.lr.ph64: ; preds = %164, %.lr.ph64 + %.063 = phi i64 [ %200, %.lr.ph67 ], [ 0, %164 ] + %195 = trunc i64 %.063 to i32 + %196 = getelementptr inbounds nuw i32, ptr %136, i64 %.063 + %197 = load i32, ptr %196, align 4, !tbaa !16 + %198 = zext i32 %197 to i64 + %199 = getelementptr inbounds nuw i32, ptr %0, i64 %198 + store i32 %195, ptr %199, align 4, !tbaa !16 + %200 = add nuw i64 %.063, 1 + %exitcond67.not = icmp eq i64 %200, %2 + br i1 %exitcond67.not, label %._crit_edge65, label %.lr.ph64, !llvm.loop !24 + +201: ; preds = %181, %179 + %.pn = phi { ptr, i32 } [ %182, %180 ], [ %180, %178 ] call void @_ZN17meshopt_AllocatorD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %7) #10 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %7) #10 resume { ptr, i32 } %.pn diff --git a/bench/minetest/optimized/CGUIListBox.ll b/bench/minetest/optimized/CGUIListBox.ll index abb8ad8b9dd..8b442613953 100644 --- a/bench/minetest/optimized/CGUIListBox.ll +++ b/bench/minetest/optimized/CGUIListBox.ll @@ -5008,10 +5008,10 @@ entry: if.end: ; preds = %entry %conv.i18 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2 + %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i18, i32 2 %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom store i8 1, ptr %arrayidx, align 4, !tbaa !131 - %Color = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom, i32 1 + %Color = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx, i64 0, i64 %idxprom, i32 1 store i32 %color.coerce, ptr %Color, align 4, !tbaa !52 br label %return @@ -5056,7 +5056,7 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom store i8 0, ptr %arrayidx, align 4, !tbaa !131 br label %return @@ -5085,7 +5085,7 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %arrayidx.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %arrayidx = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 %arrayidx = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %arrayidx.split, i64 0, i64 %idxprom %3 = load i8, ptr %arrayidx, align 4, !tbaa !131, !range !70, !noundef !71 %tobool = icmp ne i8 %3, 0 @@ -5116,7 +5116,7 @@ entry: if.end: ; preds = %entry %conv.i11 = zext i32 %index to i64 %idxprom = zext nneg i32 %colorType to i64 - %Color.split = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 + %Color = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %1, i64 %conv.i11, i32 2 %Color = getelementptr inbounds nuw [4 x %"struct.irr::gui::CGUIListBox::ListItem::ListItemOverrideColor"], ptr %Color.split, i64 0, i64 %idxprom, i32 1 %3 = load i32, ptr %Color, align 8, !tbaa !52 br label %return diff --git a/bench/mitsuba3/optimized/struct.ll b/bench/mitsuba3/optimized/struct.ll index 00e374ffd14..95a021ed89d 100644 --- a/bench/mitsuba3/optimized/struct.ll +++ b/bench/mitsuba3/optimized/struct.ll @@ -8131,136 +8131,136 @@ _ZN7mitsuba6detail14StructCompiler6const_IdEEN6asmjit9_abi_1_103x863MemET_.exit1 %47 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %46, i32 noundef 1607, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %2) br label %.preheader.us -.preheader.us: ; preds = %.preheader.us.preheader, %.split24.us.us - %.031.us = phi i64 [ %49, %.split24.us.us ], [ 0, %.preheader.us.preheader ] - %invariant.gep.us = getelementptr inbounds nuw [6 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %.031.us +.preheader.us: ; preds = %.preheader.us.preheader, %.split22.us.us + %.027.us = phi i64 [ %49, %.split24.us.us ], [ 0, %.preheader.us.preheader ] + %invariant.gep.us = getelementptr inbounds nuw [6 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.to_srgb_coeffs, i64 0, i64 %.027.us %48 = icmp eq i64 %.031.us, 0 br i1 %48, label %.preheader.split.us.us, label %.preheader.split.us33 -.split24.us.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us - %49 = add nuw nsw i64 %.031.us, 1 - %exitcond52.not = icmp eq i64 %49, 6 - br i1 %exitcond52.not, label %.split36.us, label %.preheader.us, !llvm.loop !372 +.split22.us.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us + %49 = add nuw nsw i64 %.027.us, 1 + %exitcond49.not = icmp eq i64 %49, 6 + br i1 %exitcond49.not, label %.split33.us, label %.preheader.us, !llvm.loop !372 .preheader.split.us.us: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us %50 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ true, %.preheader.us ] - %indvars.iv49 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ 0, %.preheader.us ] - %gep.us.us = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv49 - %51 = load float, ptr %gep.us.us, align 4 - %52 = load ptr, ptr %1, align 8, !noalias !373 + %indvars.iv46 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us ], [ 0, %.preheader.us ] + %51 = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv46 + %52 = load float, ptr %51, align 4 + %53 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %51, ptr %5, align 4, !noalias !376 - %53 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %52, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + store float %52, ptr %5, align 4, !noalias !376 + %54 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %53, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us unwind label %.split.us.split.us _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us.us: ; preds = %.preheader.split.us.us %..us.us = select i1 %50, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %54 = load ptr, ptr %1, align 8 - %55 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %54, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us.us, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %50, label %.preheader.split.us.us, label %.split24.us.us, !llvm.loop !379 - -.preheader.split.us33: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us - %56 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ true, %.preheader.us ] - %indvars.iv46 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ 0, %.preheader.us ] - %gep.us27.us = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv46 - %57 = load float, ptr %gep.us27.us, align 4 - %58 = load ptr, ptr %1, align 8, !noalias !373 + %55 = load ptr, ptr %1, align 8 + %56 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %55, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us.us, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %50, label %.preheader.split.us.us, label %.split22.us.us, !llvm.loop !379 + +.preheader.split.us30: ; preds = %.preheader.us, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us + %57 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ true, %.preheader.us ] + %indvars.iv43 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us ], [ 0, %.preheader.us ] + %58 = getelementptr inbounds nuw [2 x [6 x float]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv46 + %59 = load float, ptr %58, align 4 + %60 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %57, ptr %5, align 4, !noalias !376 - %59 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %58, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + store float %59, ptr %5, align 4, !noalias !376 + %61 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %60, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us unwind label %.split.split.us.split.us -_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us29.us: ; preds = %.preheader.split.us33 - %..us26.us = select i1 %56, ptr %0, ptr %8 +_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us25.us: ; preds = %.preheader.split.us30 + %..us24.us = select i1 %57, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %60 = load ptr, ptr %1, align 8 - %61 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %60, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %..us26.us, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %56, label %.preheader.split.us33, label %.split24.us.us, !llvm.loop !379 + %62 = load ptr, ptr %1, align 8 + %63 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %62, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %..us24.us, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %57, label %.preheader.split.us30, label %.split22.us.us, !llvm.loop !379 .split.us.split.us: ; preds = %.preheader.split.us.us - %62 = landingpad { ptr, i32 } + %64 = landingpad { ptr, i32 } catch ptr null br label %.split.us -.split.split.us.split.us: ; preds = %.preheader.split.us33 - %63 = landingpad { ptr, i32 } +.split.split.us.split.us: ; preds = %.preheader.split.us30 + %65 = landingpad { ptr, i32 } catch ptr null br label %.split.us -.preheader: ; preds = %.preheader.preheader, %.split24.us - %.031 = phi i64 [ %80, %.split24.us ], [ 0, %.preheader.preheader ] - %invariant.gep20 = getelementptr inbounds nuw [5 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %.031 +.preheader: ; preds = %.preheader.preheader, %.split22.us + %.027 = phi i64 [ %84, %.split24.us ], [ 0, %.preheader.preheader ] + %invariant.gep20 = getelementptr inbounds nuw [5 x float], ptr @__const._ZN7mitsuba6detail14StructCompiler5gammaEN6asmjit9_abi_1_103x863XmmEb.from_srgb_coeffs, i64 0, i64 %.027 %64 = icmp eq i64 %.031, 0 br i1 %64, label %.preheader.split.us, label %.preheader.split .preheader.split.us: ; preds = %.preheader, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us - %65 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ true, %.preheader ] - %indvars.iv43 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ 0, %.preheader ] - %gep21.us = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv43 - %66 = load float, ptr %gep21.us, align 4 - %67 = load ptr, ptr %1, align 8, !noalias !373 + %67 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ true, %.preheader ] + %indvars.iv40 = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us ], [ 0, %.preheader ] + %68 = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv40 + %69 = load float, ptr %68, align 4 + %70 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %66, ptr %5, align 4, !noalias !376 - %68 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %67, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + store float %69, ptr %5, align 4, !noalias !376 + %71 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %70, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us unwind label %.split.us.split _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us: ; preds = %.preheader.split.us - %..us = select i1 %65, ptr %0, ptr %8 + %..us = select i1 %67, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %69 = load ptr, ptr %1, align 8 - %70 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %69, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %65, label %.preheader.split.us, label %.split24.us, !llvm.loop !379 + %72 = load ptr, ptr %1, align 8 + %73 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_(ptr noundef nonnull align 8 dereferenceable(144) %72, i32 noundef 1182, ptr noundef nonnull align 4 dereferenceable(16) %..us, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %67, label %.preheader.split.us, label %.split22.us, !llvm.loop !379 .split.us.split: ; preds = %.preheader.split.us - %71 = landingpad { ptr, i32 } + %74 = landingpad { ptr, i32 } catch ptr null br label %.split.us .preheader.split: ; preds = %.preheader, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit - %72 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ true, %.preheader ] + %75 = phi i1 [ false, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ true, %.preheader ] %indvars.iv = phi i64 [ 1, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit ], [ 0, %.preheader ] - %gep21 = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv - %73 = load float, ptr %gep21, align 4 - %74 = load ptr, ptr %1, align 8, !noalias !373 + %76 = getelementptr inbounds nuw [2 x [5 x float]], ptr %invariant.gep20, i64 0, i64 %indvars.iv + %77 = load float, ptr %76, align 4 + %78 = load ptr, ptr %1, align 8, !noalias !373 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !373 - store float %73, ptr %5, align 4, !noalias !376 - %75 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %74, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) + store float %77, ptr %5, align 4, !noalias !376 + %79 = invoke noundef i32 @_ZN6asmjit9_abi_1_1012BaseCompiler9_newConstEPNS0_7BaseMemENS0_14ConstPoolScopeEPKvm(ptr noundef nonnull align 8 dereferenceable(504) %78, ptr noundef nonnull align 4 %14, i32 noundef 1, ptr noundef nonnull %5, i64 noundef 4) to label %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit unwind label %.split.split .split.split: ; preds = %.preheader.split - %76 = landingpad { ptr, i32 } + %80 = landingpad { ptr, i32 } catch ptr null br label %.split.us .split.us: ; preds = %.split.split, %.split.split.us.split.us, %.split.us.split, %.split.us.split.us - %.us-phi = phi { ptr, i32 } [ %71, %.split.us.split ], [ %62, %.split.us.split.us ], [ %76, %.split.split ], [ %63, %.split.split.us.split.us ] - %77 = extractvalue { ptr, i32 } %.us-phi, 0 - call void @__clang_call_terminate(ptr %77) #31 + %.us-phi = phi { ptr, i32 } [ %74, %.split.us.split ], [ %64, %.split.us.split.us ], [ %80, %.split.split ], [ %65, %.split.split.us.split.us ] + %81 = extractvalue { ptr, i32 } %.us-phi, 0 + call void @__clang_call_terminate(ptr %81) #31 unreachable _ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit: ; preds = %.preheader.split - %. = select i1 %72, ptr %0, ptr %8 + %. = select i1 %75, ptr %0, ptr %8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !373 - %78 = load ptr, ptr %1, align 8 - %79 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %78, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %., ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) - br i1 %72, label %.preheader.split, label %.split24.us, !llvm.loop !379 - -.split24.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us - %80 = add nuw nsw i64 %.031, 1 - %exitcond.not = icmp eq i64 %80, 5 - br i1 %exitcond.not, label %.split36.us, label %.preheader, !llvm.loop !372 - -.split36.us: ; preds = %.split24.us, %.split24.us.us - %81 = load ptr, ptr %1, align 8 - %82 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %81, i32 noundef 935, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %8) - %83 = load ptr, ptr %1, align 8 - %84 = load ptr, ptr %83, align 8 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 48 - %86 = load ptr, ptr %85, align 8 - %87 = call noundef i32 %86(ptr noundef nonnull align 8 dereferenceable(410) %83, ptr noundef nonnull align 4 dereferenceable(16) %11) - %88 = load ptr, ptr %1, align 8 - %89 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %88, i32 noundef 1198, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %2) + %82 = load ptr, ptr %1, align 8 + %83 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %82, i32 noundef 975, ptr noundef nonnull align 4 dereferenceable(16) %., ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %14) + br i1 %75, label %.preheader.split, label %.split22.us, !llvm.loop !379 + +.split22.us: ; preds = %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit, %_ZN7mitsuba6detail14StructCompiler6const_IfEEN6asmjit9_abi_1_103x863MemET_.exit.us + %84 = add nuw nsw i64 %.027, 1 + %exitcond.not = icmp eq i64 %84, 5 + br i1 %exitcond.not, label %.split33.us, label %.preheader, !llvm.loop !372 + +.split33.us: ; preds = %.split22.us, %.split22.us.us + %85 = load ptr, ptr %1, align 8 + %86 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %85, i32 noundef 935, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %8) + %87 = load ptr, ptr %1, align 8 + %88 = load ptr, ptr %87, align 8 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 48 + %90 = load ptr, ptr %89, align 8 + %91 = call noundef i32 %86(ptr noundef nonnull align 8 dereferenceable(410) %87, ptr noundef nonnull align 4 dereferenceable(16) %11) + %92 = load ptr, ptr %1, align 8 + %93 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter6_emitIEjRKNS0_8Operand_ES4_S4_(ptr noundef nonnull align 8 dereferenceable(144) %92, i32 noundef 1198, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %2) ret void } diff --git a/bench/oiio/optimized/imageio.ll b/bench/oiio/optimized/imageio.ll index 9f614d8d94e..d53f2241c7c 100644 --- a/bench/oiio/optimized/imageio.ll +++ b/bench/oiio/optimized/imageio.ll @@ -9789,21 +9789,21 @@ _ZN11OpenImageIO6v3_1_09ImageSpec11auto_strideERlS2_S2_liii.exit: br i1 %brmerge, label %._crit_edge76, label %.preheader58.us.us.us .preheader58.us.us.us: ; preds = %.preheader58.lr.ph, %._crit_edge.split.us.split.us.us.us.us - %.073.us.us.us = phi ptr [ %106, %._crit_edge.split.us.split.us.us.us.us ], [ %4, %.preheader58.lr.ph ] - %.04072.us.us.us = phi i32 [ %105, %._crit_edge.split.us.split.us.us.us.us ], [ 0, %.preheader58.lr.ph ] + %.073.us.us.us = phi ptr [ %105, %._crit_edge.split.us.split.us.us.us.us ], [ %4, %.preheader58.lr.ph ] + %.04072.us.us.us = phi i32 [ %104, %._crit_edge.split.us.split.us.us.us.us ], [ 0, %.preheader58.lr.ph ] %30 = add nsw i32 %.04072.us.us.us, %15 %31 = or i32 %30, %11 br label %.preheader57.us.us.us.us.us .preheader57.us.us.us.us.us: ; preds = %._crit_edge63.split.us.us.us.us.us.us, %.preheader58.us.us.us - %.04566.us.us.us.us.us = phi i32 [ 0, %.preheader58.us.us.us ], [ %103, %._crit_edge63.split.us.us.us.us.us.us ] - %.04664.us.us.us.us.us = phi ptr [ %.073.us.us.us, %.preheader58.us.us.us ], [ %104, %._crit_edge63.split.us.us.us.us.us.us ] + %.04566.us.us.us.us.us = phi i32 [ 0, %.preheader58.us.us.us ], [ %102, %._crit_edge63.split.us.us.us.us.us.us ] + %.04664.us.us.us.us.us = phi ptr [ %.073.us.us.us, %.preheader58.us.us.us ], [ %103, %._crit_edge63.split.us.us.us.us.us.us ] %32 = add nsw i32 %.04566.us.us.us.us.us, %14 br label %.preheader.us.us.us.us.us.us .preheader.us.us.us.us.us.us: ; preds = %._crit_edge.us.us.us.us.us.us, %.preheader57.us.us.us.us.us - %.04362.us.us.us.us.us.us = phi i32 [ 0, %.preheader57.us.us.us.us.us ], [ %101, %._crit_edge.us.us.us.us.us.us ] - %.04461.us.us.us.us.us.us = phi ptr [ %.04664.us.us.us.us.us, %.preheader57.us.us.us.us.us ], [ %102, %._crit_edge.us.us.us.us.us.us ] + %.04362.us.us.us.us.us.us = phi i32 [ 0, %.preheader57.us.us.us.us.us ], [ %100, %._crit_edge.us.us.us.us.us.us ] + %.04461.us.us.us.us.us.us = phi ptr [ %.04664.us.us.us.us.us, %.preheader57.us.us.us.us.us ], [ %101, %._crit_edge.us.us.us.us.us.us ] %33 = add nsw i32 %.04362.us.us.us.us.us.us, %13 br label %34 @@ -9887,28 +9887,28 @@ _ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us: ; store float %97, ptr %.04259.us.us.us.us.us.us, align 4, !tbaa !63 br label %98 -98: ; preds = %_ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us, %34 +98:; preds = %_ZN11OpenImageIO6v3_1_03pvt19bluenoise_4chan_ptrEiiiii.exit.us.us.us.us.us.us, %34 %99 = add nuw nsw i32 %.04160.us.us.us.us.us.us, 1 %100 = getelementptr inbounds nuw i8, ptr %.04259.us.us.us.us.us.us, i64 4 %exitcond.not = icmp eq i32 %99, %0 br i1 %exitcond.not, label %._crit_edge.us.us.us.us.us.us, label %34, !llvm.loop !223 ._crit_edge.us.us.us.us.us.us: ; preds = %98 - %101 = add nuw nsw i32 %.04362.us.us.us.us.us.us, 1 - %102 = getelementptr inbounds i8, ptr %.04461.us.us.us.us.us.us, i64 %.055 - %exitcond90.not = icmp eq i32 %101, %1 + %100 = add nuw nsw i32 %.04362.us.us.us.us.us.us, 1 + %101 = getelementptr inbounds i8, ptr %.04461.us.us.us.us.us.us, i64 %.055 + %exitcond90.not = icmp eq i32 %100, %1 br i1 %exitcond90.not, label %._crit_edge63.split.us.us.us.us.us.us, label %.preheader.us.us.us.us.us.us, !llvm.loop !224 ._crit_edge63.split.us.us.us.us.us.us: ; preds = %._crit_edge.us.us.us.us.us.us - %103 = add nuw nsw i32 %.04566.us.us.us.us.us, 1 - %104 = getelementptr inbounds i8, ptr %.04664.us.us.us.us.us, i64 %.054 - %exitcond91.not = icmp eq i32 %103, %2 + %102 = add nuw nsw i32 %.04566.us.us.us.us.us, 1 + %103 = getelementptr inbounds i8, ptr %.04664.us.us.us.us.us, i64 %.054 + %exitcond91.not = icmp eq i32 %102, %2 br i1 %exitcond91.not, label %._crit_edge.split.us.split.us.us.us.us, label %.preheader57.us.us.us.us.us, !llvm.loop !225 ._crit_edge.split.us.split.us.us.us.us: ; preds = %._crit_edge63.split.us.us.us.us.us.us - %105 = add nuw nsw i32 %.04072.us.us.us, 1 - %106 = getelementptr inbounds i8, ptr %.073.us.us.us, i64 %.053 - %exitcond92.not = icmp eq i32 %105, %3 + %104 = add nuw nsw i32 %.04072.us.us.us, 1 + %105 = getelementptr inbounds i8, ptr %.073.us.us.us, i64 %.053 + %exitcond92.not = icmp eq i32 %104, %3 br i1 %exitcond92.not, label %._crit_edge76, label %.preheader58.us.us.us, !llvm.loop !226 ._crit_edge76: ; preds = %._crit_edge.split.us.split.us.us.us.us, %.preheader58.lr.ph, %_ZN11OpenImageIO6v3_1_09ImageSpec11auto_strideERlS2_S2_liii.exit diff --git a/bench/oiio/optimized/psdinput.ll b/bench/oiio/optimized/psdinput.ll index b9bfc3b2e38..55be22349a9 100644 --- a/bench/oiio/optimized/psdinput.ll +++ b/bench/oiio/optimized/psdinput.ll @@ -11407,48 +11407,48 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearE br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit ._crit_edge: ; preds = %.lr.ph, %.preheader - br i1 %2, label %33, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit + br i1 %2, label %32, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %23 = phi i64 [ %21, %.lr.ph.preheader ], [ %28, %.lr.ph ] + %23 = phi i64 [ %21, %.lr.ph.preheader ], [ %27, %.lr.ph ] %24 = getelementptr inbounds nuw [10 x [4 x ptr]], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_namesE, i64 0, i64 %23 %25 = getelementptr inbounds nuw [4 x ptr], ptr %24, i64 0, i64 %indvars.iv %26 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRPKcEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %25) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %27 = load i16, ptr %17, align 2, !tbaa !171 - %28 = zext i16 %27 to i64 - %29 = getelementptr inbounds nuw [10 x i32], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_countE, i64 0, i64 %28 - %30 = load i32, ptr %29, align 4, !tbaa !26 - %31 = zext i32 %30 to i64 - %32 = icmp samesign ult i64 %indvars.iv.next, %31 - br i1 %32, label %.lr.ph, label %._crit_edge, !llvm.loop !407 - -33: ; preds = %._crit_edge - %34 = load ptr, ptr %6, align 8, !tbaa !19 - %35 = getelementptr inbounds nuw i8, ptr %1, i64 112 - %36 = load ptr, ptr %35, align 8, !tbaa !22 - %.not.i = icmp eq ptr %34, %36 - br i1 %.not.i, label %42, label %._crit_edge.i.i.i.i.i - -._crit_edge.i.i.i.i.i: ; preds = %33 - %37 = getelementptr inbounds nuw i8, ptr %34, i64 16 - store ptr %37, ptr %34, align 8, !tbaa !3 - store i8 65, ptr %37, align 1, !tbaa !12 - %38 = getelementptr inbounds nuw i8, ptr %34, i64 8 - store i64 1, ptr %38, align 8, !tbaa !9 - %39 = getelementptr inbounds nuw i8, ptr %34, i64 17 - store i8 0, ptr %39, align 1, !tbaa !12 - %40 = load ptr, ptr %6, align 8, !tbaa !19 - %41 = getelementptr inbounds nuw i8, ptr %40, i64 32 - store ptr %41, ptr %6, align 8, !tbaa !19 + %26 = load i16, ptr %17, align 2, !tbaa !171 + %27 = zext i16 %26 to i64 + %28 = getelementptr inbounds nuw [10 x i32], ptr @_ZN11OpenImageIO6v3_1_08PSDInput18mode_channel_countE, i64 0, i64 %27 + %29 = load i32, ptr %28, align 4, !tbaa !26 + %30 = zext i32 %29 to i64 + %31 = icmp samesign ult i64 %indvars.iv.next, %30 + br i1 %31, label %.lr.ph, label %._crit_edge, !llvm.loop !407 + +32: ; preds = %._crit_edge + %33 = load ptr, ptr %6, align 8, !tbaa !19 + %34 = getelementptr inbounds nuw i8, ptr %1, i64 112 + %35 = load ptr, ptr %34, align 8, !tbaa !22 + %.not.i = icmp eq ptr %33, %35 + br i1 %.not.i, label %41, label %._crit_edge.i.i.i.i.i + +._crit_edge.i.i.i.i.i: ; preds = %32 + %36 = getelementptr inbounds nuw i8, ptr %33, i64 16 + store ptr %36, ptr %33, align 8, !tbaa !3 + store i8 65, ptr %36, align 1, !tbaa !12 + %37 = getelementptr inbounds nuw i8, ptr %33, i64 8 + store i64 1, ptr %37, align 8, !tbaa !9 + %38 = getelementptr inbounds nuw i8, ptr %33, i64 17 + store i8 0, ptr %38, align 1, !tbaa !12 + %39 = load ptr, ptr %6, align 8, !tbaa !19 + %40 = getelementptr inbounds nuw i8, ptr %39, i64 32 + store ptr %40, ptr %6, align 8, !tbaa !19 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit -42: ; preds = %33 - tail call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRA2_KcEEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.15) +41: ; preds = %32 + tail call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRA2_KcEEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %33, ptr noundef nonnull align 1 dereferenceable(2) @.str.15) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit: ; preds = %42, %._crit_edge.i.i.i.i.i, %._crit_edge, %22 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRA2_KcEEERS5_DpOT_.exit: ; preds = %41, %._crit_edge.i.i.i.i.i, %._crit_edge, %22 ret void } diff --git a/bench/open3d/optimized/ImageCPU.ll b/bench/open3d/optimized/ImageCPU.ll index c456dc962f7..9543d1733bb 100644 --- a/bench/open3d/optimized/ImageCPU.ll +++ b/bench/open3d/optimized/ImageCPU.ll @@ -70284,7 +70284,7 @@ _ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35: ; preds = call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #16 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #16 - br label %142 + br label %141 58: ; preds = %29, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit %59 = landingpad { ptr, i32 } @@ -70308,7 +70308,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i36 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i36, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i37 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #16 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #16 - br label %142 + br label %141 66: ; preds = %_ZNK6open3d4core6Tensor12IsContiguousEv.exit call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %12) #16 @@ -70442,7 +70442,7 @@ _ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58: ; preds = call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #16 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %12) #16 - br label %142 + br label %141 108: ; preds = %79, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit39 %109 = landingpad { ptr, i32 } @@ -70466,61 +70466,61 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i59 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i60 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #16 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #16 - br label %142 + br label %141 116: ; preds = %_ZNK6open3d4core6Tensor12IsContiguousEv.exit57 %117 = call noundef ptr @_ZNK6open3d4core6Tensor10GetDataPtrIdEEPKT_v(ptr noundef nonnull align 8 dereferenceable(160) %1) %118 = call noundef ptr @_ZNK6open3d4core6Tensor10GetDataPtrIdEEPKT_v(ptr noundef nonnull align 8 dereferenceable(160) %2) br label %.preheader -.preheader: ; preds = %116, %137 +.preheader: ; preds = %116, %136 %indvars.iv69 = phi i64 [ 0, %116 ], [ %indvars.iv.next70, %137 ] %119 = getelementptr inbounds nuw [3 x [4 x float]], ptr %0, i64 0, i64 %indvars.iv69 %.idx = shl nuw nsw i64 %indvars.iv69, 5 %invariant.gep = getelementptr inbounds nuw i8, ptr %118, i64 %.idx - br label %138 - -120: ; preds = %137 - %121 = load double, ptr %117, align 8, !tbaa !69 - %122 = fptrunc double %121 to float - %123 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store float %122, ptr %123, align 4, !tbaa !1440 - %124 = getelementptr inbounds nuw i8, ptr %117, i64 32 - %125 = load double, ptr %124, align 8, !tbaa !69 - %126 = fptrunc double %125 to float - %127 = getelementptr inbounds nuw i8, ptr %0, i64 52 - store float %126, ptr %127, align 4, !tbaa !1441 - %128 = getelementptr inbounds nuw i8, ptr %117, i64 16 - %129 = load double, ptr %128, align 8, !tbaa !69 - %130 = fptrunc double %129 to float - %131 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store float %130, ptr %131, align 4, !tbaa !1442 - %132 = getelementptr inbounds nuw i8, ptr %117, i64 40 - %133 = load double, ptr %132, align 8, !tbaa !69 - %134 = fptrunc double %133 to float - %135 = getelementptr inbounds nuw i8, ptr %0, i64 60 - store float %134, ptr %135, align 4, !tbaa !1443 - %136 = getelementptr inbounds nuw i8, ptr %0, i64 64 - store float %3, ptr %136, align 4, !tbaa !1444 + br label %137 + +119: ; preds = %136 + %120 = load double, ptr %117, align 8, !tbaa !69 + %121 = fptrunc double %120 to float + %122 = getelementptr inbounds nuw i8, ptr %0, i64 48 + store float %121, ptr %122, align 4, !tbaa !1440 + %123 = getelementptr inbounds nuw i8, ptr %117, i64 32 + %124 = load double, ptr %123, align 8, !tbaa !69 + %125 = fptrunc double %124 to float + %126 = getelementptr inbounds nuw i8, ptr %0, i64 52 + store float %125, ptr %126, align 4, !tbaa !1441 + %127 = getelementptr inbounds nuw i8, ptr %117, i64 16 + %128 = load double, ptr %127, align 8, !tbaa !69 + %129 = fptrunc double %128 to float + %130 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store float %129, ptr %130, align 4, !tbaa !1442 + %131 = getelementptr inbounds nuw i8, ptr %117, i64 40 + %132 = load double, ptr %131, align 8, !tbaa !69 + %133 = fptrunc double %132 to float + %134 = getelementptr inbounds nuw i8, ptr %0, i64 60 + store float %133, ptr %134, align 4, !tbaa !1443 + %135 = getelementptr inbounds nuw i8, ptr %0, i64 64 + store float %3, ptr %135, align 4, !tbaa !1444 ret void -137: ; preds = %138 +136: ; preds = %137 %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1 %exitcond72.not = icmp eq i64 %indvars.iv.next70, 3 - br i1 %exitcond72.not, label %120, label %.preheader, !llvm.loop !1445 + br i1 %exitcond72.not, label %119, label %.preheader, !llvm.loop !1445 -138: ; preds = %.preheader, %138 +137: ; preds = %.preheader, %137 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %138 ] %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv - %139 = load double, ptr %gep, align 8, !tbaa !69 - %140 = fptrunc double %139 to float - %141 = getelementptr inbounds nuw [4 x float], ptr %119, i64 0, i64 %indvars.iv - store float %140, ptr %141, align 4, !tbaa !38 + %138 = load double, ptr %gep, align 8, !tbaa !69 + %139 = fptrunc double %138 to float + %140 = getelementptr inbounds nuw [4 x float], ptr %119, i64 0, i64 %indvars.iv + store float %139, ptr %140, align 4, !tbaa !38 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %137, label %138, !llvm.loop !1446 + br i1 %exitcond.not, label %136, label %137, !llvm.loop !1446 -142: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35 +141: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35 %.pn32.pn = phi { ptr, i32 } [ %109, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61 ], [ %103, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit58 ], [ %59, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit38 ], [ %53, %_ZN6open3d4core11SmallVectorINS_7utility8optionalIlEELj4EED2Ev.exit35 ] resume { ptr, i32 } %.pn32.pn } diff --git a/bench/opencc/optimized/bit-vector.ll b/bench/opencc/optimized/bit-vector.ll index 27a91403d8f..26f266b01e9 100644 --- a/bench/opencc/optimized/bit-vector.ll +++ b/bench/opencc/optimized/bit-vector.ll @@ -357,7 +357,7 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select0Em(ptr noundef %141 = add i64 %140, %129 br label %142 -142: ; preds = %107, %10 +142:; preds = %107, %10 %.065 = phi i64 [ %11, %10 ], [ %141, %107 ] ret i64 %.065 } @@ -546,7 +546,7 @@ define noundef i64 @_ZNK6marisa8grimoire6vector9BitVector7select1Em(ptr noundef %128 = add i64 %127, %116 br label %129 -129: ; preds = %95, %10 +129:; preds = %95, %10 %.062 = phi i64 [ %11, %10 ], [ %128, %95 ] ret i64 %.062 } diff --git a/bench/opencv/optimized/AKAZEFeatures.ll b/bench/opencv/optimized/AKAZEFeatures.ll index 17bcb00dec2..d3e05693b03 100644 --- a/bench/opencv/optimized/AKAZEFeatures.ll +++ b/bench/opencv/optimized/AKAZEFeatures.ll @@ -9996,8 +9996,8 @@ define internal fastcc void @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3 %2 = alloca %"class.std::allocator.31", align 1 br label %.preheader -.preheader: ; preds = %0, %8 - %.0215 = phi i32 [ -6, %0 ], [ %9, %8 ] +.preheader: ; preds = %0, %7 + %.0215 = phi i32 [ -6, %0 ], [ %8, %8 ] %.0224 = phi i32 [ 0, %0 ], [ %.2, %8 ] %3 = mul nsw i32 %.0215, %.0215 %4 = tail call i32 @llvm.abs.i32(i32 %.0215, i1 true) @@ -10005,80 +10005,80 @@ define internal fastcc void @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3 %6 = getelementptr inbounds nuw [7 x [7 x float]], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E7gauss25, i64 0, i64 %5 br label %10 -7: ; preds = %8 +6: ; preds = %7 ret void -8: ; preds = %36 - %9 = add nsw i32 %.0215, 1 - %exitcond6.not = icmp eq i32 %9, 7 - br i1 %exitcond6.not, label %7, label %.preheader, !llvm.loop !323 +7: ; preds = %35 + %8 = add nsw i32 %.0215, 1 + %exitcond6.not = icmp eq i32 %8, 7 + br i1 %exitcond6.not, label %6, label %.preheader, !llvm.loop !323 -10: ; preds = %.preheader, %36 - %.0203 = phi i32 [ -6, %.preheader ], [ %37, %36 ] +9: ; preds = %.preheader, %35 + %.0203 = phi i32 [ -6, %.preheader ], [ %36, %36 ] %.12 = phi i32 [ %.0224, %.preheader ], [ %.2, %36 ] - %11 = mul nsw i32 %.0203, %.0203 - %12 = add nuw nsw i32 %11, %3 - %13 = icmp samesign ult i32 %12, 36 - br i1 %13, label %14, label %36 + %10 = mul nsw i32 %.0203, %.0203 + %11 = add nuw nsw i32 %10, %3 + %12 = icmp samesign ult i32 %11, 36 + br i1 %12, label %13, label %35 -14: ; preds = %10 - %15 = icmp slt i32 %.12, 109 - br i1 %15, label %26, label %16 +13: ; preds = %9 + %14 = icmp slt i32 %.12, 109 + br i1 %14, label %25, label %15 -16: ; preds = %14 +15: ; preds = %13 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %1) #24 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2) #24 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %2) invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @__func__._ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_EN6gtableC2Ev, ptr noundef nonnull @.str.1, i32 noundef 1283) #26 - to label %17 unwind label %18 + to label %17 unwind label %17 -17: ; preds = %16 +16: ; preds = %15 unreachable -18: ; preds = %16 - %19 = landingpad { ptr, i32 } +17: ; preds = %15 + %18 = landingpad { ptr, i32 } cleanup - %20 = load ptr, ptr %1, align 8, !tbaa !46 - %21 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %22 = icmp eq ptr %20, %21 - br i1 %22, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %19 = load ptr, ptr %1, align 8, !tbaa !46 + %20 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %21 = icmp eq ptr %19, %20 + br i1 %21, 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 = %18 - %23 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %24 = load i64, ptr %23, align 8, !tbaa !50 - %25 = icmp ult i64 %24, 16 - call void @llvm.assume(i1 %25) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %17 + %22 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %23 = load i64, ptr %22, align 8, !tbaa !50 + %24 = icmp ult i64 %23, 16 + call void @llvm.assume(i1 %24) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %18 - call void @_ZdlPv(ptr noundef %20) #25 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %17 + call void @_ZdlPv(ptr noundef %19) #25 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #24 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %1) #24 - resume { ptr, i32 } %19 - -26: ; preds = %14 - %27 = tail call i32 @llvm.abs.i32(i32 %.0203, i1 true) - %28 = zext nneg i32 %27 to i64 - %29 = getelementptr inbounds nuw [7 x float], ptr %6, i64 0, i64 %28 - %30 = load float, ptr %29, align 4, !tbaa !8 - %31 = sext i32 %.12 to i64 - %32 = getelementptr inbounds [109 x float], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 0, i64 %31 - store float %30, ptr %32, align 4, !tbaa !8 - %33 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 872), i64 0, i64 %31 - store i32 %.0215, ptr %33, align 4, !tbaa !4 - %34 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 436), i64 0, i64 %31 - store i32 %.0203, ptr %34, align 4, !tbaa !4 - %35 = add nsw i32 %.12, 1 - br label %36 + resume { ptr, i32 } %18 + +25: ; preds = %13 + %26 = tail call i32 @llvm.abs.i32(i32 %.0203, i1 true) + %27 = zext nneg i32 %26 to i64 + %28 = getelementptr inbounds nuw [7 x float], ptr %6, i64 0, i64 %27 + %29 = load float, ptr %28, align 4, !tbaa !8 + %30 = sext i32 %.12 to i64 + %31 = getelementptr inbounds [109 x float], ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 0, i64 %30 + store float %29, ptr %31, align 4, !tbaa !8 + %32 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 872), i64 0, i64 %30 + store i32 %.0215, ptr %32, align 4, !tbaa !4 + %33 = getelementptr inbounds [109 x i32], ptr getelementptr inbounds nuw (i8, ptr @_ZZN2cvL34Sample_Derivative_Response_Radius6ERKNS_3MatES2_iiiPfS3_E1g, i64 436), i64 0, i64 %30 + store i32 %.0203, ptr %33, align 4, !tbaa !4 + %34 = add nsw i32 %.12, 1 + br label %35 -36: ; preds = %10, %26 - %.2 = phi i32 [ %35, %26 ], [ %.12, %10 ] - %37 = add nsw i32 %.0203, 1 - %exitcond.not = icmp eq i32 %37, 7 - br i1 %exitcond.not, label %8, label %10, !llvm.loop !324 +35: ; preds = %9, %25 + %.2 = phi i32 [ %34, %26 ], [ %.12, %10 ] + %36 = add nsw i32 %.0203, 1 + %exitcond.not = icmp eq i32 %36, 7 + br i1 %exitcond.not, label %7, label %9, !llvm.loop !324 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/opencv/optimized/ap3p.ll b/bench/opencv/optimized/ap3p.ll index 6280f47eddd..10548bad7e0 100644 --- a/bench/opencv/optimized/ap3p.ll +++ b/bench/opencv/optimized/ap3p.ll @@ -622,13 +622,13 @@ _ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit: ; preds = %._crit_edge.us.i, %361 = getelementptr inbounds nuw [3 x [3 x double]], ptr %3, i64 %indvars.iv.next543 br label %362 -362: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %358 +362:; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i, %358 %.05.i = phi i64 [ 0, %358 ], [ %371, %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i ] %363 = getelementptr inbounds nuw [3 x [3 x double]], ptr %360, i64 0, i64 %.05.i %364 = getelementptr inbounds nuw [3 x [3 x double]], ptr %361, i64 0, i64 %.05.i br label %365 -365: ; preds = %365, %362 +365: ; preds = %365, %362 %.05.i.i = phi i64 [ 0, %362 ], [ %370, %365 ] %366 = getelementptr inbounds nuw [3 x double], ptr %363, i64 0, i64 %.05.i.i %367 = getelementptr inbounds nuw [3 x double], ptr %364, i64 0, i64 %.05.i.i @@ -642,8 +642,8 @@ _ZN12_GLOBAL__N_118polishQuarticRootsEPKdPdi.exit: ; preds = %._crit_edge.us.i, _ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i: ; preds = %365 %371 = add nuw nsw i64 %.05.i, 1 - %exitcond.not.i237 = icmp eq i64 %371, 3 - br i1 %exitcond.not.i237, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, label %362, !llvm.loop !40 + %372 = icmp eq i64 %371, 3 + br i1 %372, label %_ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit, label %362, !llvm.loop !40 _ZSt4swapIA3_dLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S2_S6_.exit: ; preds = %_ZSt4swapIdLm3EENSt9enable_ifIXsr14__is_swappableIT_EE5valueEvE4typeERAT0__S1_S5_.exit.i %372 = getelementptr inbounds nuw [3 x double], ptr %4, i64 %indvars.iv542 diff --git a/bench/opencv/optimized/trackerKCF.ll b/bench/opencv/optimized/trackerKCF.ll index bdade29343b..e811f94f58a 100644 --- a/bench/opencv/optimized/trackerKCF.ll +++ b/bench/opencv/optimized/trackerKCF.ll @@ -7760,7 +7760,7 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader %38 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %35, %.preheader ] - %39 = phi i32 [ %75, %._crit_edge.loopexit ], [ %36, %.preheader ] + %39 = phi i32 [ %74, %._crit_edge.loopexit ], [ %36, %.preheader ] %indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1 %40 = sext i32 %38 to i64 %41 = icmp slt i64 %indvars.iv.next33, %40 @@ -7805,20 +7805,20 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %10 74: ; preds = %78 %indvars.iv.next30 = add nuw nsw i64 %indvars.iv29, 1 - %75 = load i32, ptr %28, align 4, !tbaa !124 - %76 = sext i32 %75 to i64 - %77 = icmp slt i64 %indvars.iv.next30, %76 - br i1 %77, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !188 + %74 = load i32, ptr %28, align 4, !tbaa !124 + %75 = sext i32 %74 to i64 + %76 = icmp slt i64 %indvars.iv.next30, %75 + br i1 %76, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !188 -78: ; preds = %.lr.ph, %78 +77: ; preds = %.lr.ph, %77 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %78 ] - %79 = getelementptr inbounds nuw [10 x float], ptr %67, i64 0, i64 %indvars.iv - %80 = load float, ptr %79, align 4, !tbaa !7 - %81 = getelementptr inbounds nuw [10 x float], ptr %73, i64 0, i64 %indvars.iv - store float %80, ptr %81, align 4, !tbaa !7 + %78 = getelementptr inbounds nuw [10 x float], ptr %67, i64 0, i64 %indvars.iv + %79 = load float, ptr %78, align 4, !tbaa !7 + %80 = getelementptr inbounds nuw [10 x float], ptr %73, i64 0, i64 %indvars.iv + store float %79, ptr %80, align 4, !tbaa !7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 10 - br i1 %exitcond.not, label %74, label %78, !llvm.loop !189 + br i1 %exitcond.not, label %74, label %77, !llvm.loop !189 } declare void @_ZNK2cv3Mat3mulERKNS_11_InputArrayEd(ptr dead_on_unwind writable sret(%"class.cv::MatExpr") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), double noundef) local_unnamed_addr #0 diff --git a/bench/openjdk/optimized/AlphaMath.ll b/bench/openjdk/optimized/AlphaMath.ll index c2fc05e47c7..ba099c9f2d8 100644 --- a/bench/openjdk/optimized/AlphaMath.ll +++ b/bench/openjdk/optimized/AlphaMath.ll @@ -10,7 +10,7 @@ target triple = "x86_64-pc-linux-gnu" define hidden void @initAlphaTables() local_unnamed_addr #0 { br label %1 -1: ; preds = %0, %12 +1: ; preds = %0, %11 %indvars.iv44 = phi i64 [ 1, %0 ], [ %indvars.iv.next45, %12 ] %2 = mul nuw nsw i64 %indvars.iv44, 65793 %3 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @mul8table, i64 0, i64 %indvars.iv44 @@ -19,56 +19,56 @@ define hidden void @initAlphaTables() local_unnamed_addr #0 { %6 = trunc nuw nsw i64 %2 to i32 br label %7 -7: ; preds = %1, %7 +6: ; preds = %1, %6 %indvars.iv = phi i64 [ 1, %1 ], [ %indvars.iv.next, %7 ] - %.03137 = phi i32 [ %5, %1 ], [ %11, %7 ] - %8 = lshr i32 %.03137, 24 - %9 = trunc nuw i32 %8 to i8 - %10 = getelementptr inbounds nuw [256 x i8], ptr %3, i64 0, i64 %indvars.iv - store i8 %9, ptr %10, align 1 - %11 = add i32 %.03137, %6 + %.03137 = phi i32 [ %5, %1 ], [ %10, %7 ] + %7 = lshr i32 %.03137, 24 + %8 = trunc nuw i32 %7 to i8 + %9 = getelementptr inbounds nuw [256 x i8], ptr %3, i64 0, i64 %indvars.iv + store i8 %8, ptr %9, align 1 + %10 = add i32 %.03137, %6 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 256 - br i1 %exitcond.not, label %12, label %7, !llvm.loop !6 + br i1 %exitcond.not, label %11, label %6, !llvm.loop !6 -12: ; preds = %7 +11: ; preds = %6 %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 %exitcond47.not = icmp eq i64 %indvars.iv.next45, 256 br i1 %exitcond47.not, label %.preheader35, label %1, !llvm.loop !8 -.preheader35: ; preds = %12, %._crit_edge +.preheader35: ; preds = %11, %._crit_edge %indvars.iv52 = phi i64 [ %indvars.iv.next53, %._crit_edge ], [ 1, %12 ] %indvar = phi i64 [ %indvar.next, %._crit_edge ], [ 0, %12 ] - %13 = mul nuw nsw i64 %indvar, 257 - %gep = getelementptr i8, ptr getelementptr inbounds nuw (i8, ptr @div8table, i64 257), i64 %13 - %14 = sub nsw i64 255, %indvar - %15 = trunc nuw nsw i64 %indvars.iv52 to i32 - %16 = lshr i32 %15, 1 - %17 = or disjoint i32 %16, -16777216 - %18 = udiv i32 %17, %15 + %12 = mul nuw nsw i64 %indvar, 257 + %gep = getelementptr i8, ptr getelementptr inbounds nuw (i8, ptr @div8table, i64 257), i64 %12 + %13 = sub nsw i64 255, %indvar + %14 = trunc nuw nsw i64 %indvars.iv52 to i32 + %15 = lshr i32 %14, 1 + %16 = or disjoint i32 %15, -16777216 + %17 = udiv i32 %16, %14 %19 = getelementptr inbounds nuw [256 x [256 x i8]], ptr @div8table, i64 0, i64 %indvars.iv52 br label %20 -20: ; preds = %.preheader35, %20 +18: ; preds = %.preheader35, %18 %indvars.iv48 = phi i64 [ 0, %.preheader35 ], [ %indvars.iv.next49, %20 ] - %.040 = phi i32 [ 8388608, %.preheader35 ], [ %24, %20 ] - %21 = lshr i32 %.040, 24 - %22 = trunc nuw i32 %21 to i8 - %23 = getelementptr inbounds nuw [256 x i8], ptr %19, i64 0, i64 %indvars.iv48 - store i8 %22, ptr %23, align 1 - %24 = add i32 %.040, %18 + %.040 = phi i32 [ 8388608, %.preheader35 ], [ %22, %20 ] + %19 = lshr i32 %.040, 24 + %20 = trunc nuw i32 %19 to i8 + %21 = getelementptr inbounds nuw [256 x i8], ptr %19, i64 0, i64 %indvars.iv48 + store i8 %20, ptr %21, align 1 + %22 = add i32 %.040, %17 %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 %exitcond51.not = icmp eq i64 %indvars.iv.next49, %indvars.iv52 - br i1 %exitcond51.not, label %._crit_edge, label %20, !llvm.loop !9 + br i1 %exitcond51.not, label %._crit_edge, label %18, !llvm.loop !9 -._crit_edge: ; preds = %20 - tail call void @llvm.memset.p0.i64(ptr align 1 %gep, i8 -1, i64 %14, i1 false) +._crit_edge: ; preds = %18 + tail call void @llvm.memset.p0.i64(ptr align 1 %gep, i8 -1, i64 %13, i1 false) %indvars.iv.next53 = add nuw nsw i64 %indvars.iv52, 1 %indvar.next = add nuw nsw i64 %indvar, 1 %exitcond58.not = icmp eq i64 %indvar.next, 255 - br i1 %exitcond58.not, label %25, label %.preheader35, !llvm.loop !10 + br i1 %exitcond58.not, label %23, label %.preheader35, !llvm.loop !10 -25: ; preds = %._crit_edge +23: ; preds = %._crit_edge ret void } diff --git a/bench/openjdk/optimized/assembler_x86.ll b/bench/openjdk/optimized/assembler_x86.ll index 9eabd61f38c..2a2e0c25dca 100644 --- a/bench/openjdk/optimized/assembler_x86.ll +++ b/bench/openjdk/optimized/assembler_x86.ll @@ -1042,14 +1042,14 @@ switch.lookup: ; preds = %20, %10, %13, %16, %35 = icmp eq i32 %33, 0 br i1 %35, label %36, label %41 -36: ; preds = %25 +36:; preds = %25 %37 = add i32 %34, 128 %or.cond5 = icmp ult i32 %37, 256 %spec.select = select i1 %or.cond5, i32 %34, i32 %0 br label %38 -38: ; preds = %36, %switch.lookup, %6 - %.027 = phi i32 [ %0, %switch.lookup ], [ %0, %6 ], [ %spec.select, %36 ] +40: ; preds = %36, %switch.lookup, %6 + %.0 = phi i32 [ %0, %switch.lookup ], [ %0, %6 ], [ %spec.select, %36 ] %39 = add i32 %.027, 128 %40 = icmp ult i32 %39, 256 br label %41 @@ -1064,19 +1064,19 @@ define hidden noundef zeroext i1 @_ZN9Assembler25emit_compressed_disp_byteERi(pt %3 = load i64, ptr @_ZN19Abstract_VM_Version9_featuresE, align 8 %4 = and i64 %3, 134217728 %.not28 = icmp eq i64 %4, 0 - br i1 %.not28, label %53, label %5 + br i1 %.not28, label %52, label %5 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 %7 = load ptr, ptr %6, align 8 %.not = icmp eq ptr %7, null - br i1 %.not, label %53, label %8 + br i1 %.not, label %52, label %8 8: ; preds = %5 %9 = getelementptr inbounds nuw i8, ptr %7, i64 5 %10 = load i8, ptr %9, align 1 %11 = trunc i8 %10 to i1 - br i1 %11, label %12, label %53 + br i1 %11, label %12, label %52 12: ; preds = %8 %13 = getelementptr inbounds nuw i8, ptr %7, i64 20 @@ -1133,7 +1133,7 @@ switch.lookup: ; preds = %26, %12, %19, %22, %35 = getelementptr inbounds nuw i8, ptr %7, i64 8 %36 = load i32, ptr %35, align 8 %or.cond = icmp ult i32 %36, 3 - br i1 %or.cond, label %37, label %53 + br i1 %or.cond, label %37, label %52 37: ; preds = %switch.lookup %38 = add nsw i32 %.020, %16 @@ -1149,23 +1149,23 @@ switch.lookup: ; preds = %26, %12, %19, %22, %48 = icmp eq i32 %46, 0 br i1 %48, label %49, label %57 -49: ; preds = %37 +49:; preds = %37 %50 = add i32 %47, 128 %51 = icmp ult i32 %50, 256 br i1 %51, label %52, label %53 -52: ; preds = %49 +52:; preds = %49 store i32 %47, ptr %1, align 4 br label %53 -53: ; preds = %switch.lookup, %49, %52, %8, %5, %2 - %54 = load i32, ptr %1, align 4 - %55 = add i32 %54, 128 - %56 = icmp ult i32 %55, 256 - br label %57 +52: ; preds = %switch.lookup, %49, %52, %8, %5, %2 + %53 = load i32, ptr %1, align 4 + %54 = add i32 %53, 128 + %55 = icmp ult i32 %54, 256 + br label %56 -57: ; preds = %37, %53 - %.0 = phi i1 [ %56, %53 ], [ false, %37 ] +56: ; preds = %37, %52 + %.0 = phi i1 [ %55, %53 ], [ false, %37 ] ret i1 %.0 } diff --git a/bench/openjdk/optimized/img_globals.ll b/bench/openjdk/optimized/img_globals.ll index fd538748ee1..ca2d6b9322c 100644 --- a/bench/openjdk/optimized/img_globals.ll +++ b/bench/openjdk/optimized/img_globals.ll @@ -51,12 +51,12 @@ define void @make_uns_ordered_dither_array(ptr noundef captures(none) initialize %20 = icmp samesign ult i32 %.055, 4 br i1 %20, label %.preheader52, label %.preheader, !llvm.loop !9 -.preheader: ; preds = %18, %29 +.preheader: ; preds = %18, %28 %indvars.iv68 = phi i64 [ %indvars.iv.next69, %29 ], [ 0, %18 ] %21 = getelementptr inbounds nuw [8 x i8], ptr %0, i64 %indvars.iv68 br label %22 -22: ; preds = %.preheader, %22 +22: ; preds = %.preheader, %22 %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %22 ] %23 = getelementptr inbounds nuw [8 x i8], ptr %21, i64 0, i64 %indvars.iv64 %24 = load i8, ptr %23, align 1 @@ -67,14 +67,14 @@ define void @make_uns_ordered_dither_array(ptr noundef captures(none) initialize store i8 %28, ptr %23, align 1 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next65, 8 - br i1 %exitcond67.not, label %29, label %22, !llvm.loop !10 + br i1 %exitcond67.not, label %28, label %22, !llvm.loop !10 -29: ; preds = %22 +28: ; preds = %22 %indvars.iv.next69 = add nuw nsw i64 %indvars.iv68, 1 %exitcond71.not = icmp eq i64 %indvars.iv.next69, 8 - br i1 %exitcond71.not, label %30, label %.preheader, !llvm.loop !11 + br i1 %exitcond71.not, label %29, label %.preheader, !llvm.loop !11 -30: ; preds = %29 +29: ; preds = %28 ret void } diff --git a/bench/openspiel/optimized/CalcTables.ll b/bench/openspiel/optimized/CalcTables.ll index 0b32f2e373d..04389ce128e 100644 --- a/bench/openspiel/optimized/CalcTables.ll +++ b/bench/openspiel/optimized/CalcTables.ll @@ -501,7 +501,7 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %24 %28 = getelementptr inbounds nuw i8, ptr %4, i64 168 br label %29 -29: ; preds = %.preheader, %43 +29: ; preds = %.preheader, %42 %indvars.iv64 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next65, %43 ] %30 = getelementptr inbounds nuw [200 x %struct.deal], ptr %10, i64 0, i64 %indvars.iv64 %31 = load i32, ptr %30, align 4 @@ -511,7 +511,7 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %24 %34 = getelementptr inbounds [5 x [4 x i32]], ptr %1, i64 0, i64 %33 br label %35 -35: ; preds = %29, %35 +35: ; preds = %29, %35 %indvars.iv60 = phi i64 [ 0, %29 ], [ %indvars.iv.next61, %35 ] %36 = getelementptr inbounds nuw [13 x i32], ptr %32, i64 0, i64 %indvars.iv60 %37 = load i32, ptr %36, align 4 @@ -523,14 +523,14 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %24 store i32 %38, ptr %42, align 4 %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 %exitcond63.not = icmp eq i64 %indvars.iv.next61, 4 - br i1 %exitcond63.not, label %43, label %35, !llvm.loop !13 + br i1 %exitcond63.not, label %42, label %35, !llvm.loop !13 -43: ; preds = %35 +42: ; preds = %35 %indvars.iv.next65 = add nuw nsw i64 %indvars.iv64, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next65, 5 br i1 %exitcond67.not, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, label %29, !llvm.loop !14 -_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %43, %24, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit +_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %42, %24, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit %.032 = phi i32 [ %27, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ %25, %24 ], [ 1, %43 ] ret i32 %.032 } @@ -709,7 +709,7 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %49 %64 = getelementptr inbounds nuw [200 x %struct.ddTableResults], ptr %61, i64 0, i64 %indvars.iv161 br label %65 -65: ; preds = %.preheader106.us, %72 +65: ; preds = %.preheader106.us, %71 %indvars.iv156 = phi i64 [ 0, %.preheader106.us ], [ %indvars.iv.next157, %72 ] %66 = add nuw nsw i64 %indvars.iv156, %63 %67 = getelementptr inbounds nuw [200 x %struct.deal], ptr %59, i64 0, i64 %66 @@ -720,60 +720,60 @@ _Z14CalcAllBoardsNP6boardsP12solvedBoards.exit: ; preds = %49 %71 = getelementptr inbounds [5 x [4 x i32]], ptr %64, i64 0, i64 %70 br label %73 -72: ; preds = %73 +71: ; preds = %72 %indvars.iv.next157 = add nuw nsw i64 %indvars.iv156, 1 %exitcond160.not = icmp eq i64 %indvars.iv.next157, %62 br i1 %exitcond160.not, label %._crit_edge124.us, label %65, !llvm.loop !19 -73: ; preds = %73, %65 +72: ; preds = %72, %65 %indvars.iv152 = phi i64 [ %indvars.iv.next153, %73 ], [ 0, %65 ] - %74 = getelementptr inbounds nuw [13 x i32], ptr %69, i64 0, i64 %indvars.iv152 - %75 = load i32, ptr %74, align 4 - %76 = sub nsw i32 13, %75 - %77 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv152 - %78 = load i32, ptr %77, align 4 - %79 = sext i32 %78 to i64 - %80 = getelementptr inbounds [4 x i32], ptr %71, i64 0, i64 %79 - store i32 %76, ptr %80, align 4 + %73 = getelementptr inbounds nuw [13 x i32], ptr %69, i64 0, i64 %indvars.iv152 + %74 = load i32, ptr %73, align 4 + %75 = sub nsw i32 13, %74 + %76 = getelementptr inbounds nuw [4 x i32], ptr @rho, i64 0, i64 %indvars.iv152 + %77 = load i32, ptr %76, align 4 + %78 = sext i32 %77 to i64 + %79 = getelementptr inbounds [4 x i32], ptr %71, i64 0, i64 %78 + store i32 %75, ptr %79, align 4 %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1 %exitcond155.not = icmp eq i64 %indvars.iv.next153, 4 - br i1 %exitcond155.not, label %72, label %73, !llvm.loop !20 + br i1 %exitcond155.not, label %71, label %72, !llvm.loop !20 -._crit_edge124.us: ; preds = %72 +._crit_edge124.us: ; preds = %71 %indvars.iv.next162 = add nuw nsw i64 %indvars.iv161, 1 - %81 = load i32, ptr %0, align 4 - %82 = sext i32 %81 to i64 - %83 = icmp slt i64 %indvars.iv.next162, %82 - br i1 %83, label %.preheader106.us, label %._crit_edge126, !llvm.loop !21 + %80 = load i32, ptr %0, align 4 + %81 = sext i32 %80 to i64 + %82 = icmp slt i64 %indvars.iv.next162, %81 + br i1 %82, label %.preheader106.us, label %._crit_edge126, !llvm.loop !21 ._crit_edge126: ; preds = %._crit_edge124.us %or.cond = icmp ult i32 %1, 4 - %84 = icmp eq i32 %spec.select103, 5 - %or.cond3 = select i1 %or.cond, i1 %84, i1 false + %83 = icmp eq i32 %spec.select103, 5 + %or.cond3 = select i1 %or.cond, i1 %83, i1 false br i1 %or.cond3, label %.preheader, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread .preheader: ; preds = %._crit_edge126 - %85 = icmp sgt i32 %81, 0 - %86 = getelementptr inbounds nuw i8, ptr %3, i64 4 - br i1 %85, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread + %84 = icmp sgt i32 %80, 0 + %85 = getelementptr inbounds nuw i8, ptr %3, i64 4 + br i1 %84, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread -87: ; preds = %.lr.ph +86: ; preds = %.lr.ph %indvars.iv.next165 = add nuw nsw i64 %indvars.iv164, 1 - %88 = load i32, ptr %0, align 4 - %89 = sext i32 %88 to i64 - %90 = icmp slt i64 %indvars.iv.next165, %89 - br i1 %90, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, !llvm.loop !22 + %87 = load i32, ptr %0, align 4 + %88 = sext i32 %87 to i64 + %89 = icmp slt i64 %indvars.iv.next165, %88 + br i1 %89, label %.lr.ph, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread, !llvm.loop !22 -.lr.ph: ; preds = %.preheader, %87 +.lr.ph: ; preds = %.preheader, %86 %indvars.iv164 = phi i64 [ %indvars.iv.next165, %87 ], [ 0, %.preheader ] - %91 = getelementptr inbounds nuw [200 x %struct.ddTableResults], ptr %86, i64 0, i64 %indvars.iv164 - %92 = getelementptr inbounds nuw [40 x %struct.parResults], ptr %4, i64 0, i64 %indvars.iv164 - %93 = call i32 @Par(ptr noundef nonnull %91, ptr noundef %92, i32 noundef %1) - %.not99 = icmp eq i32 %93, 1 - br i1 %.not99, label %87, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread - -_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %.lr.ph, %87, %53, %.preheader106.lr.ph, %.preheader, %49, %._crit_edge, %._crit_edge126, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit, %13, %12 - %.079 = phi i32 [ -201, %12 ], [ -202, %13 ], [ %52, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ 1, %._crit_edge126 ], [ %50, %49 ], [ -101, %._crit_edge ], [ 1, %.preheader ], [ 1, %.preheader106.lr.ph ], [ 1, %53 ], [ %93, %.lr.ph ], [ 1, %87 ] + %90 = getelementptr inbounds nuw [200 x %struct.ddTableResults], ptr %85, i64 0, i64 %indvars.iv164 + %91 = getelementptr inbounds nuw [40 x %struct.parResults], ptr %4, i64 0, i64 %indvars.iv164 + %92 = call i32 @Par(ptr noundef nonnull %90, ptr noundef %91, i32 noundef %1) + %.not99 = icmp eq i32 %92, 1 + br i1 %.not99, label %86, label %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread + +_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit.thread: ; preds = %.lr.ph, %86, %53, %.preheader106.lr.ph, %.preheader, %49, %._crit_edge, %._crit_edge126, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit, %13, %12 + %.079 = phi i32 [ -201, %12 ], [ -202, %13 ], [ %52, %_Z14CalcAllBoardsNP6boardsP12solvedBoards.exit ], [ 1, %._crit_edge126 ], [ %50, %49 ], [ -101, %._crit_edge ], [ 1, %.preheader ], [ 1, %.preheader106.lr.ph ], [ 1, %53 ], [ %92, %.lr.ph ], [ 1, %87 ] ret i32 %.079 } diff --git a/bench/openspiel/optimized/PBN.ll b/bench/openspiel/optimized/PBN.ll index 0e3d32ac25f..9b7ac2dc1ae 100644 --- a/bench/openspiel/optimized/PBN.ll +++ b/bench/openspiel/optimized/PBN.ll @@ -64,7 +64,7 @@ define noundef range(i32 0, 2) i32 @_Z14ConvertFromPBNPKcPA4_j(ptr noundef reado %.074 = phi i32 [ 1, %10 ], [ 2, %11 ], [ 3, %12 ], [ 0, %9 ], [ 0, %9 ] br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %46 +.lr.ph: ; preds = %.lr.ph.preheader, %45 %indvars.iv103 = phi i64 [ %indvars.iv101, %.lr.ph.preheader ], [ %indvars.iv.next104, %46 ] %.07196 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1, %46 ] %.07295 = phi i32 [ 0, %.lr.ph.preheader ], [ %.173, %46 ] @@ -137,28 +137,28 @@ default.unreachable: ; preds = %17 store i32 %40, ptr %38, align 4 br label %46 -41: ; preds = %15 +41:; preds = %15 switch i8 %14, label %46 [ i8 46, label %42 i8 32, label %44 ] -42: ; preds = %41 - %43 = add nsw i32 %.07196, 1 - br label %46 +41: ; preds = %41 + %42 = add nsw i32 %.07196, 1 + br label %45 -44: ; preds = %41 - %45 = add nsw i32 %.07295, 1 - br label %46 +43: ; preds = %41 + %44 = add nsw i32 %.07295, 1 + br label %45 -46: ; preds = %41, %42, %44, %29 - %.173 = phi i32 [ %.07295, %29 ], [ %.07295, %42 ], [ %45, %44 ], [ %.07295, %41 ] - %.1 = phi i32 [ %.07196, %29 ], [ %43, %42 ], [ 0, %44 ], [ %.07196, %41 ] +45: ; preds = %41, %41, %43, %29 + %.173 = phi i32 [ %.07295, %29 ], [ %.07295, %42 ], [ %44, %44 ], [ %.07295, %41 ] + %.1 = phi i32 [ %.07196, %29 ], [ %42, %42 ], [ 0, %44 ], [ %.07196, %41 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond.not = icmp eq i64 %indvars.iv.next104, 80 br i1 %exitcond.not, label %.critedge2, label %.lr.ph, !llvm.loop !6 -.critedge2: ; preds = %46, %.lr.ph, %.critedge +.critedge2: ; preds = %45, %.lr.ph, %.critedge %.070 = phi i32 [ 0, %.critedge ], [ 1, %.lr.ph ], [ 1, %46 ] ret i32 %.070 } diff --git a/bench/openssl/optimized/quic_ackm.ll b/bench/openssl/optimized/quic_ackm.ll index d99393f21a4..ea5bfb258bf 100644 --- a/bench/openssl/optimized/quic_ackm.ll +++ b/bench/openssl/optimized/quic_ackm.ll @@ -2444,41 +2444,41 @@ define ptr @ossl_ackm_get_ack_frame(ptr noundef %0, i32 noundef %1) local_unname %14 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %13, i64 0, i64 %4 br label %15 -15: ; preds = %15, %.lr.ph.i +39: ; preds = %39, %.lr.ph.i %.01922.i = phi ptr [ %.01920.i, %.lr.ph.i ], [ %.019.i, %15 ] %.021.i = phi i64 [ 0, %.lr.ph.i ], [ %23, %15 ] %16 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 16 %17 = load i64, ptr %16, align 8, !tbaa !104 %18 = getelementptr inbounds nuw [32 x %struct.ossl_quic_ack_range_st], ptr %14, i64 0, i64 %.021.i store i64 %17, ptr %18, align 8, !tbaa !63 - %19 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 24 - %20 = load i64, ptr %19, align 8, !tbaa !107 - %21 = getelementptr inbounds nuw i8, ptr %18, i64 8 - store i64 %20, ptr %21, align 8, !tbaa !59 - %22 = getelementptr i8, ptr %.01922.i, i64 8 + %45 = getelementptr inbounds nuw i8, ptr %.01922.i, i64 24 + %46 = load i64, ptr %45, align 8, !tbaa !107 + %47 = getelementptr inbounds nuw i8, ptr %18, i64 8 + store i64 %46, ptr %47, align 8, !tbaa !59 + %48 = getelementptr i8, ptr %.01922.i, i64 8 %23 = add nuw nsw i64 %.021.i, 1 - %.019.i = load ptr, ptr %22, align 8, !tbaa !110 - %24 = icmp ne ptr %.019.i, null + %50 = load ptr, ptr %48, align 8, !tbaa !110 + %24 = icmp ne ptr %50, null %25 = icmp samesign ult i64 %.021.i, 2 %26 = select i1 %24, i1 %25, i1 false br i1 %26, label %15, label %ackm_fill_rx_ack_ranges.exit, !llvm.loop !111 -ackm_fill_rx_ack_ranges.exit: ; preds = %15, %2 +ackm_fill_rx_ack_ranges.exit: ; preds = %15, %2 %.0.lcssa.i = phi i64 [ 0, %2 ], [ %23, %15 ] - %27 = getelementptr inbounds nuw i8, ptr %0, i64 656 - %28 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %27, i64 0, i64 %4 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 656 + %28 = getelementptr inbounds [3 x [32 x %struct.ossl_quic_ack_range_st]], ptr %56, i64 0, i64 %4 store ptr %28, ptr %5, align 8, !tbaa !56 - %29 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %.0.lcssa.i, ptr %29, align 8, !tbaa !62 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 2216 - %31 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %30, i64 0, i64 %4 - %32 = load i64, ptr %31, align 8 + %58 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %.0.lcssa.i, ptr %58, align 8, !tbaa !62 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 2216 + %60 = getelementptr inbounds [3 x %struct.OSSL_TIME], ptr %59, i64 0, i64 %4 + %32 = load i64, ptr %60, align 8 %.not = icmp eq i64 %32, 0 br i1 %.not, label %38, label %33 -33: ; preds = %ackm_fill_rx_ack_ranges.exit +33: ; preds = %ackm_fill_rx_ack_ranges.exit %34 = icmp ugt i64 %10, %32 - %35 = icmp eq i32 %1, 2 + %.not.i39 = icmp eq i32 %1, 2 %or.cond = and i1 %35, %34 br i1 %or.cond, label %36, label %38 @@ -2531,12 +2531,12 @@ ackm_fill_rx_ack_ranges.exit: ; preds = %15, %2 br i1 %.not.i39, label %ackm_set_flush_deadline.exit, label %ossl_ackm_get_ack_deadline.exit.i ossl_ackm_get_ack_deadline.exit.i: ; preds = %40 - %66 = load i8, ptr %61, align 1, !tbaa !33 - %.not.i.i = icmp eq i8 %66, 0 + %65 = load i8, ptr %61, align 1, !tbaa !33 + %.not.i.i = icmp eq i8 %65, 0 %spec.select.i = sext i1 %.not.i.i to i64 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 2392 - %68 = load ptr, ptr %67, align 8, !tbaa !109 - tail call void %65(i64 %spec.select.i, i32 noundef %1, ptr noundef %68) #12 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 2392 + %67 = load ptr, ptr %66, align 8, !tbaa !109 + tail call void %65(i64 %spec.select.i, i32 noundef %1, ptr noundef %67) #12 br label %ackm_set_flush_deadline.exit ackm_set_flush_deadline.exit: ; preds = %40, %ossl_ackm_get_ack_deadline.exit.i diff --git a/bench/openssl/optimized/quic_cfq_test.ll b/bench/openssl/optimized/quic_cfq_test.ll index 55d6409234a..90ccf96e5a7 100644 --- a/bench/openssl/optimized/quic_cfq_test.ll +++ b/bench/openssl/optimized/quic_cfq_test.ll @@ -132,18 +132,18 @@ define internal range(i32 0, 2) i32 @test_cfq() #0 { %38 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv br label %39 -39: ; preds = %.preheader76, %43 +39: ; preds = %.preheader76, %43 %.15588 = phi i64 [ 0, %.preheader76 ], [ %44, %43 ] %40 = getelementptr inbounds nuw [10 x ptr], ptr %38, i64 0, i64 %.15588 %41 = load ptr, ptr %40, align 8, !tbaa !15 %.not65 = icmp eq ptr %41, null br i1 %.not65, label %43, label %42 -42: ; preds = %39 +42: ; preds = %39 tail call void @ossl_quic_cfq_mark_lost(ptr noundef %1, ptr noundef nonnull %41, i32 noundef -1) #3 br label %43 -43: ; preds = %39, %42 +43:; preds = %39, %42 %44 = add nuw nsw i64 %.15588, 1 %exitcond97.not = icmp eq i64 %44, 10 br i1 %exitcond97.not, label %45, label %39, !llvm.loop !18 @@ -151,52 +151,52 @@ define internal range(i32 0, 2) i32 @test_cfq() #0 { 45: ; preds = %43 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond99.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond99.not, label %46, label %.preheader76, !llvm.loop !19 + br i1 %exitcond99.not, label %45, label %.preheader76, !llvm.loop !19 -46: ; preds = %45 - %47 = tail call fastcc i32 @check(ptr noundef %1) - %.not62 = icmp eq i32 %47, 0 +45: ; preds = %45 + %46 = tail call fastcc i32 @check(ptr noundef %1) + %.not62 = icmp eq i32 %46, 0 br i1 %.not62, label %.loopexit, label %.preheader74 -.preheader74: ; preds = %46, %55 +.preheader74: ; preds = %45, %53 %indvars.iv101 = phi i64 [ %indvars.iv.next102, %55 ], [ 0, %46 ] %48 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv101 br label %49 -49: ; preds = %.preheader74, %53 - %.25690 = phi i64 [ 0, %.preheader74 ], [ %54, %53 ] - %50 = getelementptr inbounds nuw [10 x ptr], ptr %48, i64 0, i64 %.25690 - %51 = load ptr, ptr %50, align 8, !tbaa !15 - %.not64 = icmp eq ptr %51, null - br i1 %.not64, label %53, label %52 +47: ; preds = %.preheader74, %51 + %.25690 = phi i64 [ 0, %.preheader74 ], [ %52, %53 ] + %48 = getelementptr inbounds nuw [10 x ptr], ptr %48, i64 0, i64 %.25690 + %49 = load ptr, ptr %48, align 8, !tbaa !15 + %.not64 = icmp eq ptr %49, null + br i1 %.not64, label %51, label %50 -52: ; preds = %49 - tail call void @ossl_quic_cfq_release(ptr noundef %1, ptr noundef nonnull %51) #3 - br label %53 +50: ; preds = %47 + tail call void @ossl_quic_cfq_release(ptr noundef %1, ptr noundef nonnull %49) #3 + br label %51 -53: ; preds = %49, %52 - %54 = add nuw nsw i64 %.25690, 1 - %exitcond100.not = icmp eq i64 %54, 10 - br i1 %exitcond100.not, label %55, label %49, !llvm.loop !20 +51: ; preds = %47, %50 + %52 = add nuw nsw i64 %.25690, 1 + %exitcond100.not = icmp eq i64 %52, 10 + br i1 %exitcond100.not, label %53, label %47, !llvm.loop !20 -55: ; preds = %53 +53: ; preds = %51 %indvars.iv.next102 = add nuw nsw i64 %indvars.iv101, 1 %exitcond104.not = icmp eq i64 %indvars.iv.next102, 3 br i1 %exitcond104.not, label %.preheader, label %.preheader74, !llvm.loop !21 -56: ; preds = %.preheader - %57 = add nuw nsw i32 %.492, 1 - %exitcond105.not = icmp eq i32 %57, 3 +54: ; preds = %.preheader + %55 = add nuw nsw i32 %.492, 1 + %exitcond105.not = icmp eq i32 %55, 3 br i1 %exitcond105.not, label %.loopexit, label %.preheader, !llvm.loop !22 -.preheader: ; preds = %55, %56 - %.492 = phi i32 [ %57, %56 ], [ 0, %55 ] - %58 = tail call ptr @ossl_quic_cfq_get_priority_head(ptr noundef %1, i32 noundef %.492) #3 - %59 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 164, ptr noundef nonnull @.str.14, ptr noundef %58) #3 - %.not63 = icmp eq i32 %59, 0 - br i1 %.not63, label %.loopexit, label %56 +.preheader: ; preds = %53, %54 + %.492 = phi i32 [ %55, %56 ], [ 0, %55 ] + %56 = tail call ptr @ossl_quic_cfq_get_priority_head(ptr noundef %1, i32 noundef %.492) #3 + %57 = tail call i32 @test_ptr_null(ptr noundef nonnull @.str.1, i32 noundef 164, ptr noundef nonnull @.str.14, ptr noundef %56) #3 + %.not63 = icmp eq i32 %57, 0 + br i1 %.not63, label %.loopexit, label %54 -.loopexit: ; preds = %.preheader81, %14, %17, %20, %23, %26, %.preheader78, %56, %.preheader, %46, %29, %0 +.loopexit: ; preds = %.preheader81, %14, %17, %20, %23, %26, %.preheader78, %54, %.preheader, %45, %29, %0 %.057 = phi i32 [ 0, %46 ], [ 0, %29 ], [ 0, %0 ], [ 1, %56 ], [ 0, %.preheader ], [ 0, %.preheader78 ], [ 0, %26 ], [ 0, %23 ], [ 0, %20 ], [ 0, %17 ], [ 0, %14 ], [ 0, %.preheader81 ] tail call void @ossl_quic_cfq_free(ptr noundef %1) #3 ret i32 %.057 @@ -251,9 +251,9 @@ define internal fastcc range(i32 0, 2) i32 @check(ptr noundef %0) unnamed_addr # %8 = icmp eq i32 %7, -1 br i1 %8, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %3 +._crit_edge: ; preds = %3 %9 = getelementptr inbounds nuw [3 x [10 x ptr]], ptr @items, i64 0, i64 %indvars.iv - br label %11 + br label %.lr.ph ._crit_edge: ; preds = %26, %3 %.021.lcssa = phi ptr [ %5, %3 ], [ %28, %26 ] @@ -261,45 +261,45 @@ define internal fastcc range(i32 0, 2) i32 @check(ptr noundef %0) unnamed_addr # %.not26 = icmp eq i32 %10, 0 br i1 %.not26, label %.loopexit, label %2 -11: ; preds = %.lr.ph, %26 - %12 = phi i32 [ %7, %.lr.ph ], [ %30, %26 ] +.lr.ph: ; preds = %.lr.ph, %24 + %10 = phi i32 [ %7, %.lr.ph ], [ %30, %26 ] %.02030 = phi i64 [ 0, %.lr.ph ], [ %27, %26 ] %.02129 = phi ptr [ %5, %.lr.ph ], [ %28, %26 ] - %13 = getelementptr inbounds nuw [10 x ptr], ptr %9, i64 0, i64 %.02030 - store ptr %.02129, ptr %13, align 8, !tbaa !15 - %14 = tail call i32 @test_ptr(ptr noundef nonnull @.str.1, i32 noundef 86, ptr noundef nonnull @.str.15, ptr noundef %.02129) #3 - %.not = icmp eq i32 %14, 0 - br i1 %.not, label %.loopexit, label %15 - -15: ; preds = %11 - %16 = tail call ptr @ossl_quic_cfq_item_get_encoded(ptr noundef %.02129) #3 - %17 = zext i32 %12 to i64 - %18 = getelementptr inbounds nuw i8, ptr @ref_buf, i64 %17 - %19 = tail call i32 @test_ptr_eq(ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef %16, ptr noundef nonnull %18) #3 - %.not23 = icmp eq i32 %19, 0 - br i1 %.not23, label %.loopexit, label %20 - -20: ; preds = %15 - %21 = tail call i32 @ossl_quic_cfq_item_get_pn_space(ptr noundef %.02129) #3 - %22 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 89, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, i32 noundef %21, i32 noundef %4) #3 - %.not24 = icmp eq i32 %22, 0 - br i1 %.not24, label %.loopexit, label %23 - -23: ; preds = %20 - %24 = tail call i32 @ossl_quic_cfq_item_get_state(ptr noundef %.02129) #3 - %25 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef %24, i32 noundef 0) #3 - %.not25 = icmp eq i32 %25, 0 - br i1 %.not25, label %.loopexit, label %26 - -26: ; preds = %23 - %27 = add i64 %.02030, 1 - %28 = tail call ptr @ossl_quic_cfq_item_get_priority_next(ptr noundef %.02129, i32 noundef %4) #3 - %29 = getelementptr inbounds nuw [11 x i32], ptr %6, i64 0, i64 %27 - %30 = load i32, ptr %29, align 4, !tbaa !6 - %31 = icmp eq i32 %30, -1 - br i1 %31, label %._crit_edge, label %11 - -.loopexit: ; preds = %2, %._crit_edge, %11, %15, %20, %23 + %11 = getelementptr inbounds nuw [10 x ptr], ptr %9, i64 0, i64 %.02030 + store ptr %.02129, ptr %11, align 8, !tbaa !15 + %12 = tail call i32 @test_ptr(ptr noundef nonnull @.str.1, i32 noundef 86, ptr noundef nonnull @.str.15, ptr noundef %.02129) #3 + %.not = icmp eq i32 %12, 0 + br i1 %.not, label %.loopexit, label %13 + +13: ; preds = %.lr.ph + %14 = tail call ptr @ossl_quic_cfq_item_get_encoded(ptr noundef %.02129) #3 + %15 = zext i32 %10 to i64 + %16 = getelementptr inbounds nuw i8, ptr @ref_buf, i64 %15 + %17 = tail call i32 @test_ptr_eq(ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef %14, ptr noundef nonnull %16) #3 + %.not23 = icmp eq i32 %17, 0 + br i1 %.not23, label %.loopexit, label %18 + +18: ; preds = %13 + %19 = tail call i32 @ossl_quic_cfq_item_get_pn_space(ptr noundef %.02129) #3 + %20 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 89, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.17, i32 noundef %19, i32 noundef %4) #3 + %.not24 = icmp eq i32 %20, 0 + br i1 %.not24, label %.loopexit, label %21 + +21: ; preds = %18 + %22 = tail call i32 @ossl_quic_cfq_item_get_state(ptr noundef %.02129) #3 + %23 = tail call i32 @test_int_eq(ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef %22, i32 noundef 0) #3 + %.not25 = icmp eq i32 %23, 0 + br i1 %.not25, label %.loopexit, label %24 + +24: ; preds = %21 + %25 = add i64 %.02030, 1 + %26 = tail call ptr @ossl_quic_cfq_item_get_priority_next(ptr noundef %.02129, i32 noundef %4) #3 + %27 = getelementptr inbounds nuw [11 x i32], ptr %6, i64 0, i64 %25 + %28 = load i32, ptr %27, align 4, !tbaa !6 + %29 = icmp eq i32 %28, -1 + br i1 %29, label %._crit_edge, label %.lr.ph + +.loopexit: ; preds = %2, %._crit_edge, %.lr.ph, %13, %18, %21 %.022 = phi i32 [ 0, %23 ], [ 0, %20 ], [ 0, %15 ], [ 0, %11 ], [ 1, %2 ], [ 0, %._crit_edge ] ret i32 %.022 } diff --git a/bench/openusd/optimized/av1_dx_iface.ll b/bench/openusd/optimized/av1_dx_iface.ll index b39aace96d2..356daede87b 100644 --- a/bench/openusd/optimized/av1_dx_iface.ll +++ b/bench/openusd/optimized/av1_dx_iface.ll @@ -3044,7 +3044,7 @@ define internal range(i32 0, 9) i32 @ctrl_get_tile_data(ptr noundef readonly cap %35 = load i32, ptr %26, align 32 %36 = sext i32 %35 to i64 %37 = getelementptr inbounds [64 x [64 x %struct.TileBufferDec]], ptr %25, i64 0, i64 %36 - %38 = load i32, ptr %30, align 4 + %36 = load i32, ptr %30, align 4 %39 = sext i32 %38 to i64 %40 = getelementptr inbounds [64 x %struct.TileBufferDec], ptr %37, i64 0, i64 %39 %41 = load ptr, ptr %40, align 16 diff --git a/bench/openusd/optimized/blockd.ll b/bench/openusd/optimized/blockd.ll index 6381520a847..bde46f861fb 100644 --- a/bench/openusd/optimized/blockd.ll +++ b/bench/openusd/optimized/blockd.ll @@ -169,7 +169,7 @@ define hidden void @av1_reset_entropy_context(ptr noundef readonly captures(none %wide.trip.count = zext nneg i32 %13 to i64 br label %14 -14: ; preds = %.lr.ph, %14 +14: ; preds = %.lr.ph, %14 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %14 ] %15 = getelementptr inbounds nuw [3 x %struct.macroblockd_plane], ptr %10, i64 0, i64 %indvars.iv %16 = getelementptr inbounds nuw i8, ptr %15, i64 4 diff --git a/bench/pbrt-v4/optimized/color.ll b/bench/pbrt-v4/optimized/color.ll index f2c5478c15b..637b9b8aae2 100644 --- a/bench/pbrt-v4/optimized/color.ll +++ b/bench/pbrt-v4/optimized/color.ll @@ -236,7 +236,7 @@ define dso_local { <2 x float>, float } @_ZNK4pbrt18RGBToSpectrumTableclENS_3RGB %10 = fmul float %.sroa.072.0.vec.extract, %9 %11 = tail call noundef float @sqrtf(float noundef %10) #30, !tbaa !21 %12 = fdiv float %8, %11 - br label %125 + br label %110 13: ; preds = %3 %14 = fcmp ogt float %.sroa.072.0.vec.extract, %.sroa.072.4.vec.extract @@ -325,7 +325,7 @@ _ZN4pbrt3RGBixEi.exit19: ; preds = %15, %17, %19 %66 = sext i32 %65 to i64 %67 = getelementptr inbounds [64 x [64 x [3 x float]]], ptr %56, i64 0, i64 %66 %68 = getelementptr inbounds [64 x [3 x float]], ptr %67, i64 0, i64 %59 - %69 = getelementptr inbounds [64 x [3 x float]], ptr %67, i64 0, i64 %62 + %67 = getelementptr inbounds [64 x [3 x float]], ptr %67, i64 0, i64 %62 %70 = fsub float 1.000000e+00, %43 %71 = add nuw nsw i64 %.0.i.i, 1 %72 = getelementptr inbounds nuw [64 x [64 x [64 x [3 x float]]]], ptr %55, i64 0, i64 %71 @@ -347,13 +347,13 @@ _ZN4pbrt3RGBixEi.exit19: ; preds = %15, %17, %19 %.sroa.0121.0.vec.insert124 = insertelement <2 x float> poison, float %81, i64 0 %.sroa.0121.4.vec.insert126 = insertelement <2 x float> %.sroa.0121.0.vec.insert124, float %83, i64 1 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #30 - br label %125 + br label %110 -86: ; preds = %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit", %86 +71: ; preds = %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit", %71 %indvars.iv = phi i64 [ 0, %"_ZN4pbrt12FindIntervalIZNKS_18RGBToSpectrumTableclENS_3RGBEE3$_0EEmmRKT_.exit" ], [ %indvars.iv.next, %86 ] - %87 = getelementptr inbounds nuw [3 x float], ptr %60, i64 0, i64 %indvars.iv - %88 = load float, ptr %87, align 4, !tbaa !26 - %89 = getelementptr inbounds nuw [3 x float], ptr %63, i64 0, i64 %indvars.iv + %72 = getelementptr inbounds nuw [3 x float], ptr %60, i64 0, i64 %indvars.iv + %73 = load float, ptr %72, align 4, !tbaa !26 + %74 = getelementptr inbounds nuw [3 x float], ptr %63, i64 0, i64 %indvars.iv %90 = load float, ptr %89, align 4, !tbaa !26 %91 = fmul float %64, %88 %92 = fmul float %41, %90 @@ -392,9 +392,9 @@ _ZN4pbrt3RGBixEi.exit19: ; preds = %15, %17, %19 store float %123, ptr %124, align 4, !tbaa !26 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond.not, label %80, label %86, !llvm.loop !31 + br i1 %exitcond.not, label %80, label %71, !llvm.loop !31 -125: ; preds = %80, %7 +110: ; preds = %80, %7 %.sroa.0121.0 = phi <2 x float> [ zeroinitializer, %7 ], [ %.sroa.0121.4.vec.insert126, %80 ] %.sroa.5.0 = phi float [ %12, %7 ], [ %85, %80 ] %.fca.0.insert = insertvalue { <2 x float>, float } poison, <2 x float> %.sroa.0121.0, 0 diff --git a/bench/pbrt-v4/optimized/vecmath.ll b/bench/pbrt-v4/optimized/vecmath.ll index aa05cef4be4..42310160a28 100644 --- a/bench/pbrt-v4/optimized/vecmath.ll +++ b/bench/pbrt-v4/optimized/vecmath.ll @@ -783,139 +783,139 @@ define linkonce_odr dso_local void @_ZN4pbrt6RotateEffNS_7Vector3IfEE(ptr dead_o call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #22 br label %.preheader.i -.preheader.i: ; preds = %9, %5 +.preheader.i: ; preds = %8, %5 %indvars.iv12.i = phi i64 [ 0, %5 ], [ %indvars.iv.next13.i, %9 ] %8 = getelementptr inbounds nuw [4 x [4 x float]], ptr %6, i64 0, i64 %indvars.iv12.i br label %10 -9: ; preds = %10 +8: ; preds = %9 %indvars.iv.next13.i = add nuw nsw i64 %indvars.iv12.i, 1 %exitcond15.not.i = icmp eq i64 %indvars.iv.next13.i, 4 br i1 %exitcond15.not.i, label %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit, label %.preheader.i, !llvm.loop !58 -10: ; preds = %10, %.preheader.i +9: ; preds = %9, %.preheader.i %indvars.iv.i = phi i64 [ 0, %.preheader.i ], [ %indvars.iv.next.i, %10 ] - %11 = icmp eq i64 %indvars.iv12.i, %indvars.iv.i - %12 = uitofp i1 %11 to float - %13 = getelementptr inbounds nuw [4 x float], ptr %8, i64 0, i64 %indvars.iv.i - store float %12, ptr %13, align 4, !tbaa !4 + %10 = icmp eq i64 %indvars.iv12.i, %indvars.iv.i + %11 = uitofp i1 %10 to float + %12 = getelementptr inbounds nuw [4 x float], ptr %8, i64 0, i64 %indvars.iv.i + store float %11, ptr %12, align 4, !tbaa !4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 4 - br i1 %exitcond.not.i, label %9, label %10, !llvm.loop !60 + br i1 %exitcond.not.i, label %8, label %9, !llvm.loop !60 -_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit: ; preds = %9 +_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit: ; preds = %8 %.sroa.01.0.vec.extract.i.i.i = extractelement <2 x float> %3, i64 0 - %14 = fmul <2 x float> %3, %3 - %15 = extractelement <2 x float> %14, i64 0 + %13 = fmul <2 x float> %3, %3 + %14 = extractelement <2 x float> %13, i64 0 %.sroa.01.4.vec.extract.i.i.i = extractelement <2 x float> %3, i64 1 - %16 = fmul float %.sroa.01.4.vec.extract.i.i.i, %.sroa.01.4.vec.extract.i.i.i - %17 = fadd float %15, %16 - %18 = fmul float %4, %4 - %19 = fadd float %18, %17 - %sqrt.i.i = tail call noundef float @llvm.sqrt.f32(float %19) - %20 = fdiv float %.sroa.01.0.vec.extract.i.i.i, %sqrt.i.i - %21 = fdiv float %.sroa.01.4.vec.extract.i.i.i, %sqrt.i.i - %22 = fdiv float %4, %sqrt.i.i - %23 = fmul float %20, %20 - %24 = fsub float 1.000000e+00, %23 - %25 = fmul float %2, %24 - %26 = fadd float %23, %25 - store float %26, ptr %6, align 4, !tbaa !4 - %27 = fmul float %20, %21 - %28 = fsub float 1.000000e+00, %2 - %29 = fmul float %28, %27 - %30 = fmul float %1, %22 - %31 = fsub float %29, %30 - %32 = getelementptr inbounds nuw i8, ptr %6, i64 4 - store float %31, ptr %32, align 4, !tbaa !4 - %33 = fmul float %20, %22 - %34 = fmul float %28, %33 - %35 = fmul float %1, %21 - %36 = fadd float %35, %34 - %37 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store float %36, ptr %37, align 4, !tbaa !4 - %38 = getelementptr inbounds nuw i8, ptr %6, i64 12 - store float 0.000000e+00, ptr %38, align 4, !tbaa !4 - %39 = fadd float %30, %29 - %40 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store float %39, ptr %40, align 4, !tbaa !4 - %41 = fmul float %21, %21 - %42 = fsub float 1.000000e+00, %41 - %43 = fmul float %2, %42 - %44 = fadd float %41, %43 - %45 = getelementptr inbounds nuw i8, ptr %6, i64 20 - store float %44, ptr %45, align 4, !tbaa !4 - %46 = fmul float %21, %22 - %47 = fmul float %28, %46 - %48 = fmul float %1, %20 - %49 = fsub float %47, %48 - %50 = getelementptr inbounds nuw i8, ptr %6, i64 24 - store float %49, ptr %50, align 4, !tbaa !4 - %51 = getelementptr inbounds nuw i8, ptr %6, i64 28 - store float 0.000000e+00, ptr %51, align 4, !tbaa !4 - %52 = fsub float %34, %35 - %53 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store float %52, ptr %53, align 4, !tbaa !4 - %54 = fadd float %48, %47 - %55 = getelementptr inbounds nuw i8, ptr %6, i64 36 - store float %54, ptr %55, align 4, !tbaa !4 - %56 = fmul float %22, %22 - %57 = fsub float 1.000000e+00, %56 - %58 = fmul float %2, %57 - %59 = fadd float %56, %58 - %60 = getelementptr inbounds nuw i8, ptr %6, i64 40 - store float %59, ptr %60, align 4, !tbaa !4 - %61 = getelementptr inbounds nuw i8, ptr %6, i64 44 - store float 0.000000e+00, ptr %61, align 4, !tbaa !4 + %15 = fmul float %.sroa.01.4.vec.extract.i.i.i, %.sroa.01.4.vec.extract.i.i.i + %16 = fadd float %14, %15 + %17 = fmul float %4, %4 + %18 = fadd float %17, %16 + %sqrt.i.i = tail call noundef float @llvm.sqrt.f32(float %18) + %19 = fdiv float %.sroa.01.0.vec.extract.i.i.i, %sqrt.i.i + %20 = fdiv float %.sroa.01.4.vec.extract.i.i.i, %sqrt.i.i + %21 = fdiv float %4, %sqrt.i.i + %22 = fmul float %19, %19 + %23 = fsub float 1.000000e+00, %22 + %24 = fmul float %2, %23 + %25 = fadd float %22, %24 + store float %25, ptr %6, align 4, !tbaa !4 + %26 = fmul float %19, %20 + %27 = fsub float 1.000000e+00, %2 + %28 = fmul float %27, %26 + %29 = fmul float %1, %21 + %30 = fsub float %28, %29 + %31 = getelementptr inbounds nuw i8, ptr %6, i64 4 + store float %30, ptr %31, align 4, !tbaa !4 + %32 = fmul float %19, %21 + %33 = fmul float %27, %32 + %34 = fmul float %1, %20 + %35 = fadd float %34, %33 + %36 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store float %35, ptr %36, align 4, !tbaa !4 + %37 = getelementptr inbounds nuw i8, ptr %6, i64 12 + store float 0.000000e+00, ptr %37, align 4, !tbaa !4 + %38 = fadd float %29, %28 + %39 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store float %38, ptr %39, align 4, !tbaa !4 + %40 = fmul float %20, %20 + %41 = fsub float 1.000000e+00, %40 + %42 = fmul float %2, %41 + %43 = fadd float %40, %42 + %44 = getelementptr inbounds nuw i8, ptr %6, i64 20 + store float %43, ptr %44, align 4, !tbaa !4 + %45 = fmul float %20, %21 + %46 = fmul float %27, %45 + %47 = fmul float %1, %19 + %48 = fsub float %46, %47 + %49 = getelementptr inbounds nuw i8, ptr %6, i64 24 + store float %48, ptr %49, align 4, !tbaa !4 + %50 = getelementptr inbounds nuw i8, ptr %6, i64 28 + store float 0.000000e+00, ptr %50, align 4, !tbaa !4 + %51 = fsub float %33, %34 + %52 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store float %51, ptr %52, align 4, !tbaa !4 + %53 = fadd float %47, %46 + %54 = getelementptr inbounds nuw i8, ptr %6, i64 36 + store float %53, ptr %54, align 4, !tbaa !4 + %55 = fmul float %21, %21 + %56 = fsub float 1.000000e+00, %55 + %57 = fmul float %2, %56 + %58 = fadd float %55, %57 + %59 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store float %58, ptr %59, align 4, !tbaa !4 + %60 = getelementptr inbounds nuw i8, ptr %6, i64 44 + store float 0.000000e+00, ptr %60, align 4, !tbaa !4 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #22 tail call void @llvm.experimental.noalias.scope.decl(metadata !61) br label %.preheader.i.i -.preheader.i.i: ; preds = %63, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit +.preheader.i.i: ; preds = %61, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit %indvars.iv12.i.i = phi i64 [ 0, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit ], [ %indvars.iv.next13.i.i, %63 ] %62 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv12.i.i br label %64 -63: ; preds = %64 +61: ; preds = %62 %indvars.iv.next13.i.i = add nuw nsw i64 %indvars.iv12.i.i, 1 %exitcond15.not.i.i = icmp eq i64 %indvars.iv.next13.i.i, 4 br i1 %exitcond15.not.i.i, label %.preheader.i91, label %.preheader.i.i, !llvm.loop !58 -64: ; preds = %64, %.preheader.i.i +62: ; preds = %62, %.preheader.i.i %indvars.iv.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next.i.i, %64 ] - %65 = icmp eq i64 %indvars.iv12.i.i, %indvars.iv.i.i - %66 = uitofp i1 %65 to float - %67 = getelementptr inbounds nuw [4 x float], ptr %62, i64 0, i64 %indvars.iv.i.i - store float %66, ptr %67, align 4, !tbaa !4, !alias.scope !61 + %63 = icmp eq i64 %indvars.iv12.i.i, %indvars.iv.i.i + %64 = uitofp i1 %63 to float + %65 = getelementptr inbounds nuw [4 x float], ptr %62, i64 0, i64 %indvars.iv.i.i + store float %64, ptr %65, align 4, !tbaa !4, !alias.scope !61 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 4 - br i1 %exitcond.not.i.i, label %63, label %64, !llvm.loop !60 + br i1 %exitcond.not.i.i, label %61, label %62, !llvm.loop !60 -.preheader.i91: ; preds = %63, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i +.preheader.i91: ; preds = %61, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i %indvars.iv16.i = phi i64 [ %indvars.iv.next17.i, %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i ], [ 0, %63 ] %invariant.gep.i = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv16.i - %68 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv16.i - br label %69 + %66 = getelementptr inbounds nuw [4 x [4 x float]], ptr %7, i64 0, i64 %indvars.iv16.i + br label %67 -_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i: ; preds = %69 +_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i: ; preds = %67 %indvars.iv.next17.i = add nuw nsw i64 %indvars.iv16.i, 1 %exitcond19.not.i = icmp eq i64 %indvars.iv.next17.i, 4 br i1 %exitcond19.not.i, label %_ZN4pbrt9TransposeILi4EEENS_12SquareMatrixIXT_EEERKS2_.exit, label %.preheader.i91, !llvm.loop !64 -69: ; preds = %69, %.preheader.i91 +67: ; preds = %67, %.preheader.i91 %indvars.iv.i92 = phi i64 [ 0, %.preheader.i91 ], [ %indvars.iv.next.i93, %69 ] %gep.i = getelementptr inbounds nuw [4 x [4 x float]], ptr %invariant.gep.i, i64 0, i64 %indvars.iv.i92 - %70 = load float, ptr %gep.i, align 4, !tbaa !4, !noalias !61 - %71 = getelementptr inbounds nuw float, ptr %68, i64 %indvars.iv.i92 - store float %70, ptr %71, align 4, !tbaa !4, !alias.scope !61 + %68 = load float, ptr %gep.i, align 4, !tbaa !4, !noalias !61 + %69 = getelementptr inbounds nuw float, ptr %66, i64 %indvars.iv.i92 + store float %68, ptr %69, align 4, !tbaa !4, !alias.scope !61 %indvars.iv.next.i93 = add nuw nsw i64 %indvars.iv.i92, 1 %exitcond.not.i94 = icmp eq i64 %indvars.iv.next.i93, 4 - br i1 %exitcond.not.i94, label %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i, label %69, !llvm.loop !65 + br i1 %exitcond.not.i94, label %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i, label %67, !llvm.loop !65 _ZN4pbrt9TransposeILi4EEENS_12SquareMatrixIXT_EEERKS2_.exit: ; preds = %_ZN4pbrt12SquareMatrixILi4EEC2Ev.exit.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(128) %0, ptr noundef nonnull align 4 dereferenceable(64) %6, i64 64, i1 false), !tbaa.struct !66 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 64 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %72, ptr noundef nonnull align 4 dereferenceable(64) %7, i64 64, i1 false), !tbaa.struct !66 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 64 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %70, ptr noundef nonnull align 4 dereferenceable(64) %7, i64 64, i1 false), !tbaa.struct !66 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #22 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #22 ret void diff --git a/bench/php/optimized/in_body.ll b/bench/php/optimized/in_body.ll index fafc0185d4b..4982e3197b5 100644 --- a/bench/php/optimized/in_body.ll +++ b/bench/php/optimized/in_body.ll @@ -1145,11 +1145,11 @@ lxb_html_tag_is_category.exit.backedge: ; preds = %36, %lxb_html_tree_ %.not = icmp eq i64 %11, 0 br i1 %.not, label %.loopexit, label %10 -41: ; preds = %36 +40: ; preds = %36 tail call void @lxb_html_tree_parse_error(ptr noundef %0, ptr noundef %1, i32 noundef 1) #6 br label %.loopexit -.loopexit: ; preds = %lxb_html_tag_is_category.exit.backedge, %2, %41, %32 +.loopexit: ; preds = %lxb_html_tag_is_category.exit.backedge, %2, %40, %32 ret void } @@ -1601,9 +1601,9 @@ lxb_html_tree_node_is.exit31.thread: ; preds = %lxb_html_tree_curre br label %lxb_html_tree_node_is.exit35.thread lxb_html_tree_node_is.exit.thread: ; preds = %.lr.ph.preheader, %.lr.ph.backedge - %33 = phi i64 [ %53, %.lr.ph.backedge ], [ %16, %.lr.ph.preheader ] - %34 = phi i64 [ %50, %.lr.ph.backedge ], [ %13, %.lr.ph.preheader ] - %35 = phi i64 [ %46, %.lr.ph.backedge ], [ %9, %.lr.ph.preheader ] + %33 = phi i64 [ %52, %.lr.ph.backedge ], [ %16, %.lr.ph.preheader ] + %34 = phi i64 [ %49, %.lr.ph.backedge ], [ %13, %.lr.ph.preheader ] + %35 = phi i64 [ %45, %.lr.ph.backedge ], [ %9, %.lr.ph.preheader ] %36 = icmp ult i64 %34, 196 %37 = icmp ult i64 %33, 8 %or.cond.i = and i1 %36, %37 @@ -1626,21 +1626,21 @@ lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_ ] lxb_html_tree_node_is.exit33: ; preds = %42 - %43 = icmp ne i64 %33, 2 + %42 = icmp ne i64 %33, 2 %.not.old.old = icmp eq i64 %35, 0 - %or.cond44 = or i1 %43, %.not.old.old + %or.cond44 = or i1 %42, %.not.old.old br i1 %or.cond44, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge lxb_html_tree_node_is.exit34: ; preds = %42 - %44 = icmp ne i64 %33, 2 + %43 = icmp ne i64 %33, 2 %.not.old = icmp eq i64 %35, 0 - %or.cond43 = or i1 %44, %.not.old + %or.cond43 = or i1 %43, %.not.old br i1 %or.cond43, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge lxb_html_tree_node_is.exit35: ; preds = %42 - %45 = icmp ne i64 %33, 2 + %44 = icmp ne i64 %33, 2 %.not = icmp eq i64 %35, 0 - %or.cond = or i1 %45, %.not + %or.cond = or i1 %44, %.not br i1 %or.cond, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge lxb_html_tag_is_category.exit.thread: ; preds = %lxb_html_tree_node_is.exit.thread, %lxb_html_tag_is_category.exit @@ -1648,40 +1648,40 @@ lxb_html_tag_is_category.exit.thread: ; preds = %lxb_html_tree_node_ br i1 %.not.old.old.old, label %lxb_html_tree_node_is.exit35.thread, label %.lr.ph.backedge .lr.ph.backedge: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit35, %lxb_html_tree_node_is.exit34, %lxb_html_tree_node_is.exit33 - %46 = add i64 %35, -1 - %47 = getelementptr inbounds nuw ptr, ptr %5, i64 %46 - %48 = load ptr, ptr %47, align 8, !tbaa !37 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 - %50 = load i64, ptr %49, align 8, !tbaa !38 - %51 = icmp eq i64 %50, 113 - %52 = getelementptr inbounds nuw i8, ptr %48, i64 24 - %53 = load i64, ptr %52, align 8, !tbaa !42 - %54 = icmp eq i64 %53, 2 - %or.cond45 = select i1 %51, i1 %54, i1 false + %45 = add i64 %35, -1 + %46 = getelementptr inbounds nuw ptr, ptr %5, i64 %45 + %47 = load ptr, ptr %46, align 8, !tbaa !37 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 8 + %49 = load i64, ptr %48, align 8, !tbaa !38 + %50 = icmp eq i64 %49, 113 + %51 = getelementptr inbounds nuw i8, ptr %47, i64 24 + %52 = load i64, ptr %51, align 8, !tbaa !42 + %53 = icmp eq i64 %52, 2 + %or.cond45 = select i1 %50, i1 %53, i1 false br i1 %or.cond45, label %.lr.ph._crit_edge, label %lxb_html_tree_node_is.exit.thread lxb_html_tree_node_is.exit35.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit35, %lxb_html_tree_node_is.exit33, %lxb_html_tree_node_is.exit34, %42, %2, %32 - %55 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 - %.not30 = icmp eq ptr %55, null - br i1 %.not30, label %57, label %56 + %54 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 + %.not30 = icmp eq ptr %54, null + br i1 %.not30, label %56, label %55 -56: ; preds = %lxb_html_tree_node_is.exit35.thread +55: ; preds = %lxb_html_tree_node_is.exit35.thread tail call void @lxb_html_tree_close_p_element(ptr noundef %0, ptr noundef %1) #6 - br label %57 + br label %56 -57: ; preds = %56, %lxb_html_tree_node_is.exit35.thread - %58 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 - %59 = icmp eq ptr %58, null - br i1 %59, label %60, label %63 +56: ; preds = %55, %lxb_html_tree_node_is.exit35.thread + %57 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 + %58 = icmp eq ptr %57, null + br i1 %58, label %59, label %62 -60: ; preds = %57 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 2, ptr %61, align 8, !tbaa !22 - %62 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 - br label %63 +59: ; preds = %56 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 2, ptr %60, align 8, !tbaa !22 + %61 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 + br label %62 -63: ; preds = %57, %60 - %.029 = phi i1 [ %62, %60 ], [ true, %57 ] +62: ; preds = %56, %59 + %.029 = phi i1 [ %61, %59 ], [ true, %57 ] ret i1 %.029 } @@ -1797,22 +1797,22 @@ lxb_html_tag_is_category.exit: ; preds = %lxb_html_tree_node_ i8 -111, label %lxb_html_tree_node_is.exit47 ] -lxb_html_tree_node_is.exit45: ; preds = %52 - %53 = icmp ne i64 %.pre, 2 +lxb_html_tree_node_is.exit45: ; preds = %51 + %52 = icmp ne i64 %.pre, 2 %.not.old.old = icmp eq i64 %9, 0 - %or.cond57 = or i1 %53, %.not.old.old + %or.cond57 = or i1 %52, %.not.old.old br i1 %or.cond57, label %lxb_html_tree_node_is.exit47.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit46: ; preds = %52 - %54 = icmp ne i64 %.pre, 2 +lxb_html_tree_node_is.exit46: ; preds = %51 + %53 = icmp ne i64 %.pre, 2 %.not.old = icmp eq i64 %9, 0 - %or.cond56 = or i1 %54, %.not.old + %or.cond56 = or i1 %53, %.not.old br i1 %or.cond56, label %lxb_html_tree_node_is.exit47.thread, label %.lr.ph.backedge -lxb_html_tree_node_is.exit47: ; preds = %52 - %55 = icmp ne i64 %.pre, 2 +lxb_html_tree_node_is.exit47: ; preds = %51 + %54 = icmp ne i64 %.pre, 2 %.not = icmp eq i64 %9, 0 - %or.cond = or i1 %55, %.not + %or.cond = or i1 %54, %.not br i1 %or.cond, label %lxb_html_tree_node_is.exit47.thread, label %.lr.ph.backedge lxb_html_tag_is_category.exit.thread: ; preds = %lxb_html_tree_node_is.exit40.thread, %lxb_html_tag_is_category.exit @@ -1831,28 +1831,28 @@ lxb_html_tree_node_is.exit47.thread.sink.split: ; preds = %lxb_html_tree_node_ tail call void @lxb_html_tree_open_elements_pop_until_tag_id(ptr noundef nonnull %0, i64 noundef %.sink, i64 noundef 2, i1 noundef zeroext true) #6 br label %lxb_html_tree_node_is.exit47.thread -lxb_html_tree_node_is.exit47.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit47, %lxb_html_tree_node_is.exit45, %lxb_html_tree_node_is.exit46, %52, %lxb_html_tree_node_is.exit47.thread.sink.split, %2 - %56 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 - %.not37 = icmp eq ptr %56, null - br i1 %.not37, label %58, label %57 +lxb_html_tree_node_is.exit47.thread: ; preds = %lxb_html_tag_is_category.exit.thread, %lxb_html_tree_node_is.exit47, %lxb_html_tree_node_is.exit45, %lxb_html_tree_node_is.exit46, %51, %lxb_html_tree_node_is.exit47.thread.sink.split, %2 + %55 = tail call ptr @lxb_html_tree_element_in_scope(ptr noundef %0, i64 noundef 145, i64 noundef 2, i32 noundef 32) #6 + %.not37 = icmp eq ptr %55, null + br i1 %.not37, label %57, label %56 -57: ; preds = %lxb_html_tree_node_is.exit47.thread +56: ; preds = %lxb_html_tree_node_is.exit47.thread tail call void @lxb_html_tree_close_p_element(ptr noundef %0, ptr noundef %1) #6 - br label %58 + br label %57 -58: ; preds = %57, %lxb_html_tree_node_is.exit47.thread - %59 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 - %60 = icmp eq ptr %59, null - br i1 %60, label %61, label %64 +57: ; preds = %56, %lxb_html_tree_node_is.exit47.thread + %58 = tail call ptr @lxb_html_tree_insert_foreign_element(ptr noundef %0, ptr noundef %1, i64 noundef 2) #6 + %59 = icmp eq ptr %58, null + br i1 %59, label %60, label %63 -61: ; preds = %58 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 2, ptr %62, align 8, !tbaa !22 - %63 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 - br label %64 +60: ; preds = %57 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 2, ptr %61, align 8, !tbaa !22 + %62 = tail call zeroext i1 @lxb_html_tree_process_abort(ptr noundef %0) #6 + br label %63 -64: ; preds = %58, %61 - %.036 = phi i1 [ %63, %61 ], [ true, %58 ] +63: ; preds = %57, %60 + %.036 = phi i1 [ %62, %60 ], [ true, %57 ] ret i1 %.036 } diff --git a/bench/pocketpy/optimized/linalg.ll b/bench/pocketpy/optimized/linalg.ll index 50674bcb91f..91f4a96a81a 100644 --- a/bench/pocketpy/optimized/linalg.ll +++ b/bench/pocketpy/optimized/linalg.ll @@ -14169,15 +14169,15 @@ _ZN4pkpy2VM10IndexErrorERKNS_3StrE.exit.i: ; preds = %.noexc28.i %39 = getelementptr inbounds [3 x [3 x float]], ptr %38, i64 0, i64 %27 %40 = getelementptr inbounds [3 x float], ptr %39, i64 0, i64 %31 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) - %41 = load float, ptr %40, align 4 - %42 = fpext float %41 to double - store double %42, ptr %4, align 8 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %44 = call noundef ptr @_ZN4pkpy11ManagedHeap5gcnewIdJRdEEEPNS_8PyObjectENS_4TypeEDpOT0_(ptr noundef nonnull align 8 dereferenceable(84) %43, i16 3, ptr noundef nonnull align 8 dereferenceable(8) %4) + %40 = load float, ptr %40, align 4 + %41 = fpext float %40 to double + store double %41, ptr %4, align 8 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %43 = call noundef ptr @_ZN4pkpy11ManagedHeap5gcnewIdJRdEEEPNS_8PyObjectENS_4TypeEDpOT0_(ptr noundef nonnull align 8 dereferenceable(84) %42, i16 3, ptr noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) - ret ptr %44 + ret ptr %43 } ; Function Attrs: mustprogress uwtable diff --git a/bench/postgres/optimized/dt_common.ll b/bench/postgres/optimized/dt_common.ll index 6f6ae37c88a..beae932b355 100644 --- a/bench/postgres/optimized/dt_common.ll +++ b/bench/postgres/optimized/dt_common.ll @@ -4622,61 +4622,61 @@ sub_0307: ; preds = %180, %.tail302.thre br i1 %371, label %382, label %391 .thread392: ; preds = %360 - %372 = add i32 %355, -1 - %373 = sext i32 %372 to i64 - %374 = getelementptr inbounds [13 x i32], ptr getelementptr inbounds nuw (i8, ptr @day_tab, i64 52), i64 0, i64 %373 - %375 = load i32, ptr %374, align 4 - %376 = icmp sgt i32 %356, %375 - br i1 %376, label %.thread297, label %391 + %371 = add i32 %355, -1 + %372 = sext i32 %371 to i64 + %373 = getelementptr inbounds [13 x i32], ptr getelementptr inbounds nuw (i8, ptr @day_tab, i64 52), i64 0, i64 %372 + %374 = load i32, ptr %373, align 4 + %375 = icmp sgt i32 %356, %374 + br i1 %375, label %.thread297, label %389 .thread: ; preds = %354 - %377 = add i32 %355, -1 - %378 = sext i32 %377 to i64 - %379 = getelementptr inbounds [13 x i32], ptr @day_tab, i64 0, i64 %378 - %380 = load i32, ptr %379, align 4 - %381 = icmp sgt i32 %356, %380 - br i1 %381, label %.thread297, label %391 - -382: ; preds = %362 - %383 = srem i32 %357, 400 - %384 = icmp eq i32 %383, 0 - %385 = zext i1 %384 to i64 + %376 = add i32 %355, -1 + %377 = sext i32 %376 to i64 + %378 = getelementptr inbounds [13 x i32], ptr @day_tab, i64 0, i64 %377 + %379 = load i32, ptr %378, align 4 + %380 = icmp sgt i32 %356, %379 + br i1 %380, label %.thread297, label %389 + +381: ; preds = %362 + %382 = srem i32 %357, 400 + %383 = icmp eq i32 %382, 0 + %384 = zext i1 %383 to i64 br label %.thread297 -.thread297: ; preds = %.thread392, %.thread, %382 - %386 = phi i64 [ %368, %382 ], [ %378, %.thread ], [ %373, %.thread392 ] - %387 = phi i64 [ %385, %382 ], [ 0, %.thread ], [ 1, %.thread392 ] - %388 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %387 - %389 = getelementptr inbounds [13 x i32], ptr %388, i64 0, i64 %386 +.thread297: ; preds = %.thread392, %.thread, %381 + %385 = phi i64 [ %368, %382 ], [ %377, %.thread ], [ %372, %.thread392 ] + %386 = phi i64 [ %384, %382 ], [ 0, %.thread ], [ 1, %.thread392 ] + %387 = getelementptr inbounds nuw [2 x [13 x i32]], ptr @day_tab, i64 0, i64 %386 + %389 = getelementptr inbounds [13 x i32], ptr %387, i64 0, i64 %386 %390 = load i32, ptr %389, align 4 store i32 %390, ptr %5, align 4 %.pre = load i32, ptr %4, align 4 %.pre388 = load i32, ptr %3, align 4 - br label %391 + br label %389 -391: ; preds = %.thread392, %.thread, %.thread297, %362 - %392 = phi i32 [ %.pre388, %.thread297 ], [ %357, %362 ], [ %357, %.thread ], [ %357, %.thread392 ] - %393 = phi i32 [ %.pre, %.thread297 ], [ %355, %362 ], [ %355, %.thread ], [ %355, %.thread392 ] - %394 = phi i32 [ %390, %.thread297 ], [ %356, %362 ], [ %356, %.thread ], [ %356, %.thread392 ] +389: ; preds = %.thread392, %.thread, %.thread297, %362 + %390 = phi i32 [ %.pre388, %.thread297 ], [ %357, %362 ], [ %357, %.thread ], [ %357, %.thread392 ] + %391 = phi i32 [ %.pre, %.thread297 ], [ %355, %362 ], [ %355, %.thread ], [ %355, %.thread392 ] + %392 = phi i32 [ %390, %.thread297 ], [ %356, %362 ], [ %356, %.thread ], [ %356, %.thread392 ] %.18 = phi i32 [ 1, %.thread297 ], [ %.17, %362 ], [ %.17, %.thread ], [ %.17, %.thread392 ] - %395 = load i32, ptr %8, align 4 - store i32 %395, ptr %13, align 8 - %396 = load i32, ptr %7, align 4 - %397 = getelementptr inbounds nuw i8, ptr %13, i64 4 - store i32 %396, ptr %397, align 4 - %398 = load i32, ptr %6, align 4 - %399 = getelementptr inbounds nuw i8, ptr %13, i64 8 - store i32 %398, ptr %399, align 8 - %400 = getelementptr inbounds nuw i8, ptr %13, i64 12 - store i32 %394, ptr %400, align 4 - %401 = getelementptr inbounds nuw i8, ptr %13, i64 16 - store i32 %393, ptr %401, align 8 - %402 = getelementptr inbounds nuw i8, ptr %13, i64 20 - store i32 %392, ptr %402, align 4 - %403 = call i32 @tm2timestamp(ptr noundef nonnull %13, i32 noundef 0, ptr noundef %9, ptr noundef %2) #17 + %393 = load i32, ptr %8, align 4 + store i32 %393, ptr %13, align 8 + %394 = load i32, ptr %7, align 4 + %395 = getelementptr inbounds nuw i8, ptr %13, i64 4 + store i32 %394, ptr %395, align 4 + %396 = load i32, ptr %6, align 4 + %397 = getelementptr inbounds nuw i8, ptr %13, i64 8 + store i32 %396, ptr %397, align 8 + %398 = getelementptr inbounds nuw i8, ptr %13, i64 12 + store i32 %392, ptr %398, align 4 + %399 = getelementptr inbounds nuw i8, ptr %13, i64 16 + store i32 %391, ptr %399, align 8 + %400 = getelementptr inbounds nuw i8, ptr %13, i64 20 + store i32 %390, ptr %400, align 4 + %401 = call i32 @tm2timestamp(ptr noundef nonnull %13, i32 noundef 0, ptr noundef %9, ptr noundef %2) #17 br label %.loopexit316 -.loopexit316: ; preds = %29, %10, %._crit_edge, %391, %242, %206, %198, %104, %246, %210, %202, %108 +.loopexit316: ; preds = %29, %10, %._crit_edge, %389, %242, %206, %198, %104, %246, %210, %202, %108 %.0 = phi i32 [ %111, %108 ], [ %205, %202 ], [ %213, %210 ], [ %249, %246 ], [ 1, %104 ], [ 1, %198 ], [ 1, %206 ], [ 1, %242 ], [ %.0257.be, %._crit_edge ], [ %.18, %391 ], [ 1, %10 ], [ 1, %29 ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #17 diff --git a/bench/postgres/optimized/localtime.ll b/bench/postgres/optimized/localtime.ll index a088483486b..36612ed1332 100644 --- a/bench/postgres/optimized/localtime.ll +++ b/bench/postgres/optimized/localtime.ll @@ -2383,49 +2383,49 @@ define internal fastcc i32 @transtime(i32 noundef %0, ptr noundef nonnull readon %62 = add i32 %61, -7 br label %65 -63: ; preds = %65 +63:; preds = %65 %64 = add nuw nsw i32 %.04358, 1 %exitcond.not = icmp eq i32 %64, %52 br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !36 -65: ; preds = %.lr.ph, %63 - %.04358 = phi i32 [ 1, %.lr.ph ], [ %64, %63 ] +65: ; preds = %.lr.ph, %63 + %.14657 = phi i32 [ 1, %.lr.ph ], [ %64, %63 ] %.14657 = phi i32 [ %.045, %.lr.ph ], [ %66, %63 ] %66 = add i32 %.14657, 7 %.not53 = icmp slt i32 %66, %59 br i1 %.not53, label %63, label %._crit_edge -._crit_edge: ; preds = %63, %65, %.._crit_edge_crit_edge - %.pre-phi = phi i32 [ %.pre, %.._crit_edge_crit_edge ], [ %56, %65 ], [ %56, %63 ] +._crit_edge:; preds = %63, %65, %.._crit_edge_crit_edge + %.146.lcssa = phi i32 [ %.pre, %.._crit_edge_crit_edge ], [ %56, %65 ], [ %56, %63 ] %.146.lcssa = phi i32 [ %.045, %.._crit_edge_crit_edge ], [ %62, %63 ], [ %.14657, %65 ] %67 = mul i32 %.146.lcssa, 86400 %68 = icmp sgt i32 %.pre-phi, 0 br i1 %68, label %.lr.ph64, label %.loopexit .lr.ph64: ; preds = %._crit_edge - %69 = zext i1 %12 to i64 + %68 = zext i1 %12 to i64 %70 = getelementptr inbounds nuw [2 x [12 x i32]], ptr @mon_lengths, i64 0, i64 %69 %wide.trip.count = zext nneg i32 %.pre-phi to i64 - br label %71 + br label %69 -71: ; preds = %.lr.ph64, %71 +69: ; preds = %.lr.ph64, %69 %indvars.iv = phi i64 [ 0, %.lr.ph64 ], [ %indvars.iv.next, %71 ] - %.162 = phi i32 [ %67, %.lr.ph64 ], [ %75, %71 ] - %72 = getelementptr inbounds nuw [12 x i32], ptr %70, i64 0, i64 %indvars.iv - %73 = load i32, ptr %72, align 4 - %74 = mul i32 %73, 86400 - %75 = add i32 %74, %.162 + %.162 = phi i32 [ %67, %.lr.ph64 ], [ %73, %71 ] + %70 = getelementptr inbounds nuw [12 x i32], ptr %70, i64 0, i64 %indvars.iv + %71 = load i32, ptr %70, align 4 + %72 = mul i32 %71, 86400 + %73 = add i32 %72, %.162 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond67.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond67.not, label %.loopexit, label %71, !llvm.loop !37 - -.loopexit: ; preds = %71, %._crit_edge, %14, %20, %11 - %.042 = phi i32 [ 0, %11 ], [ %23, %20 ], [ %spec.select54, %14 ], [ %67, %._crit_edge ], [ %75, %71 ] - %76 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %77 = load i32, ptr %76, align 4 - %78 = add i32 %.042, %2 - %79 = add i32 %78, %77 - ret i32 %79 + br i1 %exitcond67.not, label %.loopexit, label %69, !llvm.loop !37 + +.loopexit: ; preds = %69, %._crit_edge, %14, %20, %11 + %.042 = phi i32 [ 0, %11 ], [ %23, %20 ], [ %spec.select54, %14 ], [ %67, %._crit_edge ], [ %73, %71 ] + %74 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %75 = load i32, ptr %74, align 4 + %76 = add i32 %.042, %2 + %77 = add i32 %76, %75 + ret i32 %77 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/postgres/optimized/tidbitmap.ll b/bench/postgres/optimized/tidbitmap.ll index 592571a4614..6c13440d8d5 100644 --- a/bench/postgres/optimized/tidbitmap.ll +++ b/bench/postgres/optimized/tidbitmap.ll @@ -2631,9 +2631,9 @@ tbm_advance_schunkbit.exit.thread: ; preds = %27, %tbm_advance_sc .thread81: ; preds = %.loopexit %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %3, i64 56 %.pre = load i32, ptr %.phi.trans.insert, align 8 - %.phi.trans.insert92 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %.pre93 = load i32, ptr %.phi.trans.insert92, align 8 - %69 = icmp slt i32 %.pre, %.pre93 + %.phi.trans.insert94 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %.pre95 = load i32, ptr %.phi.trans.insert94, align 8 + %69 = icmp slt i32 %.pre, %.pre95 br i1 %69, label %.thread81.thread, label %101 .thread81.thread: ; preds = %56, %.thread81 diff --git a/bench/proj/optimized/defmodel.ll b/bench/proj/optimized/defmodel.ll index fd340ea8991..09077ef7a5a 100644 --- a/bench/proj/optimized/defmodel.ll +++ b/bench/proj/optimized/defmodel.ll @@ -887,7 +887,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %. store double 0.000000e+00, ptr %27, align 8, !tbaa !15 %28 = load i64, ptr %14, align 8, !tbaa !14 %29 = icmp eq i64 %28, 0 - br i1 %29, label %121, label %30 + br i1 %29, label %119, label %30 30: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #37 @@ -1000,10 +1000,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %53 %81 = icmp sgt i32 %39, %80 br i1 %81, label %87, label %105 -82: ; preds = %82, %.lr.ph.i - %indvars.iv.i = phi i64 [ 1, %.lr.ph.i ], [ %indvars.iv.next.i, %82 ] +82:; preds = %82, %.lr.ph.i + %.03659.i = phi i64 [ 1, %.lr.ph.i ], [ %indvars.iv.next.i, %82 ] %.03659.i = phi i32 [ %72, %.lr.ph.i ], [ %86, %82 ] - %83 = add nsw i64 %indvars.iv.i, -1 + %83 = add nsw i64 %.03659.i, -1 %84 = getelementptr inbounds [12 x i32], ptr %75, i64 0, i64 %83 %85 = load i32, ptr %84, align 4, !tbaa !18 %86 = add nsw i32 %85, %.03659.i @@ -1011,108 +1011,108 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %53 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %._crit_edge.i, label %82, !llvm.loop !20 -87: ; preds = %._crit_edge.i - %88 = call ptr @__cxa_allocate_exception(i64 40) #37 +85: ; preds = %._crit_edge.i + %86 = call ptr @__cxa_allocate_exception(i64 40) #37 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #37 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull @.str.114, ptr noundef nonnull align 8 dereferenceable(32) %1) to label %89 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i -89: ; preds = %87 - invoke void @_ZN16DeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %88, ptr noundef nonnull align 8 dereferenceable(32) %10) - to label %90 unwind label %92 +87: ; preds = %85 + invoke void @_ZN16DeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %86, ptr noundef nonnull align 8 dereferenceable(32) %10) + to label %90 unwind label %90 -90: ; preds = %89 - invoke void @__cxa_throw(ptr nonnull %88, ptr nonnull @_ZTIN16DeformationModel16ParsingExceptionE, ptr nonnull @_ZN16DeformationModel16ParsingExceptionD2Ev) #36 - to label %104 unwind label %92 +88: ; preds = %87 + invoke void @__cxa_throw(ptr nonnull %86, ptr nonnull @_ZTIN16DeformationModel16ParsingExceptionE, ptr nonnull @_ZN16DeformationModel16ParsingExceptionD2Ev) #36 + to label %104 unwind label %90 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i: ; preds = %87 - %91 = landingpad { ptr, i32 } +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i: ; preds = %85 + %89 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #37 br label %.sink.split.i -92: ; preds = %90, %89 +90: ; preds = %88, %87 %.0.i = phi i1 [ false, %90 ], [ true, %89 ] - %93 = landingpad { ptr, i32 } + %91 = landingpad { ptr, i32 } cleanup - %94 = load ptr, ptr %10, align 8, !tbaa !3 - %95 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %96 = icmp eq ptr %94, %95 - br i1 %96, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i + %92 = load ptr, ptr %10, align 8, !tbaa !3 + %93 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %94 = icmp eq ptr %92, %93 + br i1 %94, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i: ; preds = %92 - %97 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %98 = load i64, ptr %97, align 8, !tbaa !14 - %99 = icmp ult i64 %98, 16 - call void @llvm.assume(i1 %99) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i: ; preds = %90 + %95 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %96 = load i64, ptr %95, align 8, !tbaa !14 + %97 = icmp ult i64 %96, 16 + call void @llvm.assume(i1 %97) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #37 br i1 %.0.i, label %.sink.split.i, label %.body -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i: ; preds = %92 - %100 = load i64, ptr %95, align 8, !tbaa !13 - %101 = add i64 %100, 1 - call void @_ZdlPvm(ptr noundef %94, i64 noundef %101) #38 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i: ; preds = %90 + %98 = load i64, ptr %93, align 8, !tbaa !13 + %99 = add i64 %98, 1 + call void @_ZdlPvm(ptr noundef %92, i64 noundef %99) #38 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #37 br i1 %.0.i, label %.sink.split.i, label %.body .sink.split.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i - %.sink.i = phi ptr [ %49, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %88, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] - %.pn46.pn.ph.i = phi { ptr, i32 } [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %93, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] + %.sink.i = phi ptr [ %49, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %86, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] + %.pn46.pn.ph.i = phi { ptr, i32 } [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread.i ], [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %89, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread.i ], [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ] call void @__cxa_free_exception(ptr %.sink.i) #37 br label %.body .body: ; preds = %.sink.split.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i - %.pn46.pn.i = phi { ptr, i32 } [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %93, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ], [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %93, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %.pn46.pn.ph.i, %.sink.split.i ] + %.pn46.pn.i = phi { ptr, i32 } [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %91, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.i ], [ %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51.i ], [ %.pn46.pn.ph.i, %.sink.split.i ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #37 - %102 = load ptr, ptr %0, align 8, !tbaa !3 - %103 = icmp eq ptr %102, %12 - br i1 %103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %100 = load ptr, ptr %0, align 8, !tbaa !3 + %101 = icmp eq ptr %100, %12 + br i1 %101, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i -104: ; preds = %90, %51 +102: ; preds = %88, %51 unreachable -105: ; preds = %._crit_edge.i - %106 = sitofp i32 %34 to double - %107 = mul nsw i32 %.036.lcssa.i, 86400 - %108 = mul nuw nsw i32 %42, 3600 - %109 = mul nuw nsw i32 %44, 60 - %110 = add nuw nsw i32 %109, %108 - %111 = add nuw nsw i32 %110, %46 - %112 = add i32 %111, %107 - %113 = sitofp i32 %112 to double - %114 = select i1 %71, double 3.162240e+07, double 3.153600e+07 - %115 = fdiv double %113, %114 - %116 = fadd double %115, %106 +103: ; preds = %._crit_edge.i + %104 = sitofp i32 %34 to double + %105 = mul nsw i32 %.036.lcssa.i, 86400 + %106 = mul nuw nsw i32 %42, 3600 + %107 = mul nuw nsw i32 %44, 60 + %108 = add nuw nsw i32 %107, %106 + %109 = add nuw nsw i32 %108, %46 + %110 = add i32 %109, %105 + %111 = sitofp i32 %110 to double + %112 = select i1 %71, double 3.162240e+07, double 3.153600e+07 + %113 = fdiv double %111, %112 + %114 = fadd double %113, %104 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #37 - store double %116, ptr %27, align 8, !tbaa !15 - br label %121 + store double %114, ptr %27, align 8, !tbaa !15 + br label %119 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %.body - %117 = load i64, ptr %24, align 8, !tbaa !14 - %118 = icmp ult i64 %117, 16 - call void @llvm.assume(i1 %118) + %115 = load i64, ptr %24, align 8, !tbaa !14 + %116 = icmp ult i64 %115, 16 + call void @llvm.assume(i1 %116) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %.body - %119 = load i64, ptr %12, align 8, !tbaa !13 - %120 = add i64 %119, 1 - call void @_ZdlPvm(ptr noundef %102, i64 noundef %120) #38 + %117 = load i64, ptr %12, align 8, !tbaa !13 + %118 = add i64 %117, 1 + call void @_ZdlPvm(ptr noundef %100, i64 noundef %118) #38 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 resume { ptr, i32 } %.pn46.pn.i -121: ; preds = %105, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit +119: ; preds = %103, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit ret void } diff --git a/bench/proj/optimized/healpix.ll b/bench/proj/optimized/healpix.ll index 2bb1f1ac729..83af2477e2e 100644 --- a/bench/proj/optimized/healpix.ll +++ b/bench/proj/optimized/healpix.ll @@ -975,32 +975,32 @@ _ZL10vector_subPKdS0_Pd.exit.critedge.i: ; preds = %80, %79, %78, %77, %88 = getelementptr inbounds nuw [2 x double], ptr %83, i64 %indvars.iv18.i.i br label %89 -89: ; preds = %89, %86 - %90 = phi i1 [ true, %86 ], [ false, %89 ] - %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %84, %86 ], [ %85, %89 ] - %indvars.iv.i27.i = phi i64 [ 0, %86 ], [ 1, %89 ] +89:; preds = %89, %86 + %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi i1 [ true, %86 ], [ false, %89 ] + %indvars.iv.i27.i = phi double [ %84, %86 ], [ %85, %89 ] + %90 = phi i64 [ 0, %86 ], [ 1, %89 ] %91 = phi double [ 0.000000e+00, %86 ], [ %94, %89 ] - %92 = getelementptr inbounds nuw [2 x double], ptr %88, i64 0, i64 %indvars.iv.i27.i + %92 = getelementptr inbounds nuw [2 x double], ptr %88, i64 0, i64 %72 %93 = load double, ptr %92, align 8, !tbaa !56 - %94 = tail call double @llvm.fmuladd.f64(double %93, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %91) + %94 = tail call double @llvm.fmuladd.f64(double %93, double %72, double %91) br i1 %90, label %89, label %95, !llvm.loop !63 -95: ; preds = %89 +95:; preds = %89 store double %94, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 br i1 %87, label %86, label %_ZL11dot_productPA2_KdPS_Pd.exit.i, !llvm.loop !64 _ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %95 - %96 = sitofp i32 %81 to double - %97 = tail call double @llvm.fmuladd.f64(double %96, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) + %95 = sitofp i32 %81 to double + %96 = tail call double @llvm.fmuladd.f64(double %95, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i = load double, ptr %.sroa.052.i, align 16, !tbaa !56 - %98 = fadd double %97, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i + %97 = fadd double %96, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i = load double, ptr %.sroa.453.i, align 8, !tbaa !56 - %99 = fadd double %82, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i + %98 = fadd double %82, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i br label %_ZL12combine_capsddiii.exit _ZL12combine_capsddiii.exit: ; preds = %54, %_ZL11dot_productPA2_KdPS_Pd.exit.i - %.sroa.0.0.i = phi double [ %98, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %54 ] - %.sroa.3.0.i11 = phi double [ %99, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %54 ] + %.sroa.0.0.i = phi double [ %97, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %54 ] + %.sroa.3.0.i11 = phi double [ %98, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %54 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.052.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.453.i) %.fca.0.insert.i12 = insertvalue { double, double } poison, double %.sroa.0.0.i, 0 @@ -1243,32 +1243,32 @@ _ZL10vector_subPKdS0_Pd.exit.critedge.i: ; preds = %62, %61, %60, %59, %70 = getelementptr inbounds nuw [2 x double], ptr %65, i64 %indvars.iv18.i.i br label %71 -71: ; preds = %71, %68 - %72 = phi i1 [ true, %68 ], [ false, %71 ] - %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi double [ %66, %68 ], [ %67, %71 ] - %indvars.iv.i27.i = phi i64 [ 0, %68 ], [ 1, %71 ] +71:; preds = %71, %68 + %indvars.iv.i27.sroa.phi.sroa.speculated.i = phi i1 [ true, %68 ], [ false, %71 ] + %indvars.iv.i27.i = phi double [ %66, %68 ], [ %67, %71 ] + %72 = phi i64 [ 0, %68 ], [ 1, %71 ] %73 = phi double [ 0.000000e+00, %68 ], [ %76, %71 ] - %74 = getelementptr inbounds nuw [2 x double], ptr %70, i64 0, i64 %indvars.iv.i27.i + %74 = getelementptr inbounds nuw [2 x double], ptr %70, i64 0, i64 %72 %75 = load double, ptr %74, align 8, !tbaa !56 - %76 = tail call double @llvm.fmuladd.f64(double %75, double %indvars.iv.i27.sroa.phi.sroa.speculated.i, double %73) + %76 = tail call double @llvm.fmuladd.f64(double %75, double %72, double %73) br i1 %72, label %71, label %77, !llvm.loop !63 -77: ; preds = %71 +77:; preds = %71 store double %76, ptr %indvars.iv18.i.sroa.phi.i, align 8, !tbaa !56 br i1 %69, label %68, label %_ZL11dot_productPA2_KdPS_Pd.exit.i, !llvm.loop !64 _ZL11dot_productPA2_KdPS_Pd.exit.i: ; preds = %77 - %78 = sitofp i32 %63 to double - %79 = tail call double @llvm.fmuladd.f64(double %78, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) + %77 = sitofp i32 %63 to double + %78 = tail call double @llvm.fmuladd.f64(double %77, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i = load double, ptr %.sroa.052.i, align 16, !tbaa !56 - %80 = fadd double %79, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i + %79 = fadd double %78, %.sroa.052.i.0..sroa.052.i.0..sroa.052.i.0..sroa.052.0..i %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i = load double, ptr %.sroa.453.i, align 8, !tbaa !56 - %81 = fadd double %64, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i + %80 = fadd double %64, %.sroa.453.i.0..sroa.453.i.0..sroa.453.i.0..sroa.453.0..i br label %_ZL12combine_capsddiii.exit _ZL12combine_capsddiii.exit: ; preds = %36, %_ZL11dot_productPA2_KdPS_Pd.exit.i - %.sroa.0.0.i = phi double [ %80, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %36 ] - %.sroa.3.0.i8 = phi double [ %81, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %36 ] + %.sroa.0.0.i = phi double [ %79, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.014.0.i, %36 ] + %.sroa.3.0.i8 = phi double [ %80, %_ZL11dot_productPA2_KdPS_Pd.exit.i ], [ %.sroa.3.0.i, %36 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.052.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.453.i) %.fca.0.insert.i9 = insertvalue { double, double } poison, double %.sroa.0.0.i, 0 @@ -1892,32 +1892,32 @@ _ZL10vector_subPKdS0_Pd.exit.critedge: ; preds = %121, %120, %119, %1 %129 = getelementptr inbounds nuw [2 x double], ptr %124, i64 %indvars.iv18.i br label %130 -130: ; preds = %130, %127 - %131 = phi i1 [ true, %127 ], [ false, %130 ] - %indvars.iv.i27.sroa.phi.sroa.speculated = phi double [ %125, %127 ], [ %126, %130 ] - %indvars.iv.i27 = phi i64 [ 0, %127 ], [ 1, %130 ] +130:; preds = %130, %127 + %indvars.iv.i27.sroa.phi.sroa.speculated = phi i1 [ true, %127 ], [ false, %130 ] + %indvars.iv.i27 = phi double [ %125, %127 ], [ %126, %130 ] + %131 = phi i64 [ 0, %127 ], [ 1, %130 ] %132 = phi double [ 0.000000e+00, %127 ], [ %135, %130 ] - %133 = getelementptr inbounds nuw [2 x double], ptr %129, i64 0, i64 %indvars.iv.i27 + %133 = getelementptr inbounds nuw [2 x double], ptr %129, i64 0, i64 %131 %134 = load double, ptr %133, align 8, !tbaa !56 - %135 = tail call double @llvm.fmuladd.f64(double %134, double %indvars.iv.i27.sroa.phi.sroa.speculated, double %132) + %135 = tail call double @llvm.fmuladd.f64(double %134, double %131, double %132) br i1 %131, label %130, label %136, !llvm.loop !63 -136: ; preds = %130 +136:; preds = %130 store double %135, ptr %indvars.iv18.i.sroa.phi, align 8, !tbaa !56 br i1 %128, label %127, label %_ZL11dot_productPA2_KdPS_Pd.exit, !llvm.loop !64 _ZL11dot_productPA2_KdPS_Pd.exit: ; preds = %136 - %137 = sitofp i32 %122 to double - %138 = tail call double @llvm.fmuladd.f64(double %137, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) + %136 = sitofp i32 %122 to double + %137 = tail call double @llvm.fmuladd.f64(double %136, double 0x3FF921FB54442D18, double 0xC002D97C7F3321D2) %.sroa.052.0..sroa.052.0. = load double, ptr %.sroa.052, align 16, !tbaa !56 - %139 = fadd double %138, %.sroa.052.0..sroa.052.0. + %138 = fadd double %137, %.sroa.052.0..sroa.052.0. %.sroa.453.0..sroa.453.0. = load double, ptr %.sroa.453, align 8, !tbaa !56 - %140 = fadd double %123, %.sroa.453.0..sroa.453.0. + %139 = fadd double %123, %.sroa.453.0..sroa.453.0. br label %_ZL7get_capddiii.exit _ZL7get_capddiii.exit: ; preds = %21, %9, %_ZL11dot_productPA2_KdPS_Pd.exit - %.sroa.0.0 = phi double [ %139, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %0, %9 ], [ %0, %21 ] - %.sroa.3.0 = phi double [ %140, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %1, %9 ], [ %1, %21 ] + %.sroa.0.0 = phi double [ %138, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %0, %9 ], [ %0, %21 ] + %.sroa.3.0 = phi double [ %139, %_ZL11dot_productPA2_KdPS_Pd.exit ], [ %1, %9 ], [ %1, %21 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.052) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.453) %.fca.0.insert = insertvalue { double, double } poison, double %.sroa.0.0, 0 diff --git a/bench/proj/optimized/test_defmodel.ll b/bench/proj/optimized/test_defmodel.ll index cf6d8311ec9..39a0260c56e 100644 --- a/bench/proj/optimized/test_defmodel.ll +++ b/bench/proj/optimized/test_defmodel.ll @@ -1730,14 +1730,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa %39 = icmp ult i64 %38, 16 call void @llvm.assume(i1 %39) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #40 - br i1 %.039, label %.sink.split, label %93 + br i1 %.039, label %.sink.split, label %91 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %32 %40 = load i64, ptr %35, align 8, !tbaa !14 %41 = add i64 %40, 1 call void @_ZdlPvm(ptr noundef %34, i64 noundef %41) #41 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #40 - br i1 %.039, label %.sink.split, label %93 + br i1 %.039, label %.sink.split, label %91 42: ; preds = %1 %43 = and i32 %13, 3 @@ -1774,10 +1774,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %32 %60 = icmp sgt i32 %18, %59 br i1 %60, label %66, label %81 -61: ; preds = %.lr.ph, %61 - %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %61 ] +61: ; preds = %.lr.ph, %61 + %.03659 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %61 ] %.03659 = phi i32 [ %51, %.lr.ph ], [ %65, %61 ] - %62 = add nsw i64 %indvars.iv, -1 + %62 = add nsw i64 %.03659, -1 %63 = getelementptr inbounds [12 x i32], ptr %54, i64 0, i64 %62 %64 = load i32, ptr %63, align 4, !tbaa !19 %65 = add nsw i32 %64, %.03659 @@ -1785,78 +1785,78 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %32 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %61, !llvm.loop !21 -66: ; preds = %._crit_edge - %67 = call ptr @__cxa_allocate_exception(i64 40) #40 +64: ; preds = %._crit_edge + %65 = call ptr @__cxa_allocate_exception(i64 40) #40 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #40 invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull @.str.135, ptr noundef nonnull align 8 dereferenceable(32) %0) to label %68 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread -68: ; preds = %66 - invoke void @_ZN20TestDeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %67, ptr noundef nonnull align 8 dereferenceable(32) %9) - to label %69 unwind label %71 +66: ; preds = %64 + invoke void @_ZN20TestDeformationModel16ParsingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %65, ptr noundef nonnull align 8 dereferenceable(32) %9) + to label %69 unwind label %69 -69: ; preds = %68 - invoke void @__cxa_throw(ptr nonnull %67, ptr nonnull @_ZTIN20TestDeformationModel16ParsingExceptionE, ptr nonnull @_ZN20TestDeformationModel16ParsingExceptionD2Ev) #39 - to label %94 unwind label %71 +67: ; preds = %66 + invoke void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTIN20TestDeformationModel16ParsingExceptionE, ptr nonnull @_ZN20TestDeformationModel16ParsingExceptionD2Ev) #39 + to label %94 unwind label %69 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread: ; preds = %66 - %70 = landingpad { ptr, i32 } +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread: ; preds = %64 + %68 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #40 br label %.sink.split -71: ; preds = %69, %68 +69: ; preds = %67, %66 %.0 = phi i1 [ false, %69 ], [ true, %68 ] - %72 = landingpad { ptr, i32 } + %70 = landingpad { ptr, i32 } cleanup - %73 = load ptr, ptr %9, align 8, !tbaa !4 - %74 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %75 = icmp eq ptr %73, %74 - br i1 %75, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 + %71 = load ptr, ptr %9, align 8, !tbaa !4 + %72 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %73 = icmp eq ptr %71, %72 + br i1 %73, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51: ; preds = %71 - %76 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %77 = load i64, ptr %76, align 8, !tbaa !15 - %78 = icmp ult i64 %77, 16 - call void @llvm.assume(i1 %78) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51: ; preds = %69 + %74 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %75 = load i64, ptr %74, align 8, !tbaa !15 + %76 = icmp ult i64 %75, 16 + call void @llvm.assume(i1 %76) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #40 - br i1 %.0, label %.sink.split, label %93 + br i1 %.0, label %.sink.split, label %91 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %71 - %79 = load i64, ptr %74, align 8, !tbaa !14 - %80 = add i64 %79, 1 - call void @_ZdlPvm(ptr noundef %73, i64 noundef %80) #41 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %69 + %77 = load i64, ptr %72, align 8, !tbaa !14 + %78 = add i64 %77, 1 + call void @_ZdlPvm(ptr noundef %71, i64 noundef %78) #41 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #40 - br i1 %.0, label %.sink.split, label %93 - -81: ; preds = %._crit_edge - %82 = sitofp i32 %13 to double - %83 = mul nsw i32 %.036.lcssa, 86400 - %84 = mul nuw nsw i32 %21, 3600 - %85 = mul nuw nsw i32 %23, 60 - %86 = add nuw nsw i32 %85, %84 - %87 = add nuw nsw i32 %86, %25 - %88 = add i32 %87, %83 - %89 = sitofp i32 %88 to double - %90 = select i1 %50, double 3.162240e+07, double 3.153600e+07 - %91 = fdiv double %89, %90 - %92 = fadd double %91, %82 + br i1 %.0, label %.sink.split, label %91 + +79: ; preds = %._crit_edge + %80 = sitofp i32 %13 to double + %81 = mul nsw i32 %.036.lcssa, 86400 + %82 = mul nuw nsw i32 %21, 3600 + %83 = mul nuw nsw i32 %23, 60 + %84 = add nuw nsw i32 %83, %82 + %85 = add nuw nsw i32 %84, %25 + %86 = add i32 %85, %81 + %87 = sitofp i32 %86 to double + %88 = select i1 %50, double 3.162240e+07, double 3.153600e+07 + %89 = fdiv double %87, %88 + %90 = fadd double %89, %80 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #40 - ret double %92 + ret double %90 .sink.split: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i - %.sink = phi ptr [ %28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %67, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %67, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] - %.pn46.pn.ph = phi { ptr, i32 } [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %72, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %72, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] + %.sink = phi ptr [ %28, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %65, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %65, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] + %.pn46.pn.ph = phi { ptr, i32 } [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread ], [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %70, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %68, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52.thread ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ] call void @__cxa_free_exception(ptr %.sink) #40 - br label %93 + br label %91 -93: ; preds = %.sink.split, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %.pn46.pn = phi { ptr, i32 } [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %72, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ], [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %72, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %.pn46.pn.ph, %.sink.split ] +91: ; preds = %.sink.split, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit + %.pn46.pn = phi { ptr, i32 } [ %33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %70, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52 ], [ %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %70, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i51 ], [ %.pn46.pn.ph, %.sink.split ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #40 @@ -1865,7 +1865,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit52: ; preds = %71 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #40 resume { ptr, i32 } %.pn46.pn -94: ; preds = %69, %30 +92: ; preds = %67, %30 unreachable } diff --git a/bench/qemu/optimized/ahci.ll b/bench/qemu/optimized/ahci.ll index 5a9fae93df0..2539191d18b 100644 --- a/bench/qemu/optimized/ahci.ll +++ b/bench/qemu/optimized/ahci.ll @@ -640,7 +640,7 @@ trace_ahci_reset_port.exit: ; preds = %2, %9, %11, %17, %2 %35 = getelementptr inbounds nuw i8, ptr %34, i64 672 %36 = load ptr, ptr %35, align 8 %.not = icmp eq ptr %36, null - br i1 %.not, label %59, label %.preheader + br i1 %.not, label %58, label %.preheader .preheader: ; preds = %trace_ahci_reset_port.exit, %50 %indvars.iv = phi i64 [ %indvars.iv.next, %50 ], [ 0, %trace_ahci_reset_port.exit ] @@ -654,13 +654,13 @@ trace_ahci_reset_port.exit: ; preds = %2, %9, %11, %17, %2 %43 = trunc nuw i8 %42 to i1 br i1 %43, label %44, label %50 -44: ; preds = %.preheader +44: ; preds = %.preheader %45 = getelementptr inbounds nuw i8, ptr %39, i64 8 %46 = load ptr, ptr %45, align 8 %.not41 = icmp eq ptr %46, null br i1 %.not41, label %.thread, label %47 -47: ; preds = %44 +49: ; preds = %44 tail call void @blk_aio_cancel(ptr noundef nonnull %46) #14 store ptr null, ptr %45, align 8 %.pre = load i8, ptr %41, align 1, !range !9 @@ -676,26 +676,26 @@ trace_ahci_reset_port.exit: ; preds = %2, %9, %11, %17, %2 50: ; preds = %47, %.preheader, %.thread %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 32 - br i1 %exitcond.not, label %51, label %.preheader, !llvm.loop !13 - -51: ; preds = %50 - %52 = load ptr, ptr %0, align 16 - %53 = getelementptr inbounds %struct.AHCIDevice, ptr %52, i64 %5, i32 3 - store i32 0, ptr %53, align 4 - %54 = getelementptr inbounds nuw i8, ptr %34, i64 12 - %55 = load i32, ptr %54, align 4 - %56 = icmp eq i32 %55, 1 - %. = select i1 %56, i32 -351010559, i32 257 - %.45 = select i1 %56, i8 112, i8 48 + br i1 %exitcond.not, label %50, label %.preheader, !llvm.loop !13 + +50: ; preds = %50 + %51 = load ptr, ptr %0, align 16 + %52 = getelementptr inbounds %struct.AHCIDevice, ptr %51, i64 %5, i32 3 + store i32 0, ptr %52, align 4 + %53 = getelementptr inbounds nuw i8, ptr %34, i64 12 + %54 = load i32, ptr %53, align 4 + %55 = icmp eq i32 %54, 1 + %. = select i1 %55, i32 -351010559, i32 257 + %.45 = select i1 %55, i8 112, i8 48 tail call fastcc void @ahci_set_signature(ptr noundef %6, i32 noundef %.) - %57 = getelementptr inbounds nuw i8, ptr %34, i64 665 - store i8 %.45, ptr %57, align 1 - %58 = getelementptr inbounds nuw i8, ptr %34, i64 649 - store i8 1, ptr %58, align 1 + %56 = getelementptr inbounds nuw i8, ptr %34, i64 665 + store i8 %.45, ptr %56, align 1 + %57 = getelementptr inbounds nuw i8, ptr %34, i64 649 + store i8 1, ptr %57, align 1 tail call fastcc void @ahci_init_d2h(ptr noundef %6) - br label %59 + br label %58 -59: ; preds = %trace_ahci_reset_port.exit, %51 +58: ; preds = %trace_ahci_reset_port.exit, %50 ret void } diff --git a/bench/qemu/optimized/job.ll b/bench/qemu/optimized/job.ll index 89d0cfaea0d..5546076419e 100644 --- a/bench/qemu/optimized/job.ll +++ b/bench/qemu/optimized/job.ll @@ -247,12 +247,12 @@ define dso_local range(i32 -1, 1) i32 @job_apply_verb_locked(ptr noundef %0, i32 %.not.i.i = icmp eq i32 %19, 0 br i1 %.not.i.i, label %trace_job_apply_verb.exit, label %20, !prof !6 -20: ; preds = %9 - %21 = load i16, ptr @_TRACE_JOB_APPLY_VERB_DSTATE, align 2 - %.not8.i.i = icmp eq i16 %21, 0 - br i1 %.not8.i.i, label %trace_job_apply_verb.exit, label %22 +24: ; preds = %9 + %25 = load i16, ptr @_TRACE_JOB_APPLY_VERB_DSTATE, align 2 + %.not8.i.i = icmp eq i16 %25, 0 + br i1 %.not8.i.i, label %trace_job_apply_verb.exit, label %27 -22: ; preds = %20 +27: ; preds = %24 %23 = load i32, ptr @qemu_loglevel, align 4 %24 = and i32 %23, 32768 %.not9.i.i = icmp eq i32 %24, 0 @@ -266,33 +266,33 @@ define dso_local range(i32 -1, 1) i32 @job_apply_verb_locked(ptr noundef %0, i32 28: ; preds = %25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, i8 0, i64 16, i1 false), !annotation !7 - %29 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #15 - %30 = tail call i32 @qemu_get_thread_id() #15 - %31 = load i64, ptr %4, align 8 - %32 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %33 = load i64, ptr %32, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.30, i32 noundef %30, i64 noundef %31, i64 noundef %33, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %18) #15 + %28 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #15 + %29 = tail call i32 @qemu_get_thread_id() #15 + %30 = load i64, ptr %4, align 8 + %31 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %32 = load i64, ptr %31, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.30, i32 noundef %29, i64 noundef %30, i64 noundef %32, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %18) #15 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #15 br label %trace_job_apply_verb.exit -34: ; preds = %25 +33: ; preds = %25 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.31, ptr noundef nonnull %0, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %18) #15 br label %trace_job_apply_verb.exit -trace_job_apply_verb.exit: ; preds = %9, %20, %22, %28, %34 - %35 = load i8, ptr %15, align 1, !range !4, !noundef !5 - %36 = trunc nuw i8 %35 to i1 - br i1 %36, label %41, label %37 +trace_job_apply_verb.exit: ; preds = %9, %20, %22, %28, %33 + %34 = load i8, ptr %15, align 1, !range !4, !noundef !5 + %35 = trunc nuw i8 %34 to i1 + br i1 %35, label %40, label %36 -37: ; preds = %trace_job_apply_verb.exit - %38 = load ptr, ptr %0, align 8 - %39 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %6) #15 - %40 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobVerb_lookup, i32 noundef %1) #15 +36: ; preds = %trace_job_apply_verb.exit + %37 = load ptr, ptr %0, align 8 + %38 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobStatus_lookup, i32 noundef %6) #15 + %39 = tail call ptr @qapi_enum_lookup(ptr noundef nonnull @JobVerb_lookup, i32 noundef %1) #15 tail call void (ptr, ptr, i32, ptr, ptr, ...) @error_setg_internal(ptr noundef %2, ptr noundef nonnull @.str, i32 noundef 233, ptr noundef nonnull @__func__.job_apply_verb_locked, ptr noundef nonnull @.str.4, ptr noundef %38, ptr noundef %39, ptr noundef %40) #15 - br label %41 + br label %40 -41: ; preds = %trace_job_apply_verb.exit, %37 - %.0 = phi i32 [ -1, %37 ], [ 0, %trace_job_apply_verb.exit ] +40: ; preds = %trace_job_apply_verb.exit, %36 + %.0 = phi i32 [ -1, %36 ], [ 0, %trace_job_apply_verb.exit ] ret i32 %.0 } @@ -776,55 +776,55 @@ define internal fastcc void @job_state_transition_locked(ptr noundef %0, i32 nou %.not9.i.i = icmp eq i16 %22, 0 br i1 %.not9.i.i, label %trace_job_state_transition.exit, label %23 -23: ; preds = %21 - %24 = load i32, ptr @qemu_loglevel, align 4 - %25 = and i32 %24, 32768 +20: ; preds = %21 + %21 = load i32, ptr @qemu_loglevel, align 4 + %25 = and i32 %21, 32768 %.not10.i.i = icmp eq i32 %25, 0 br i1 %.not10.i.i, label %trace_job_state_transition.exit, label %26 -26: ; preds = %23 - %27 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 - %28 = trunc nuw i8 %27 to i1 +22: ; preds = %20 + %23 = load i8, ptr @message_with_timestamp, align 1, !range !4, !noundef !5 + %28 = trunc nuw i8 %23 to i1 br i1 %28, label %29, label %35 -29: ; preds = %26 +25: ; preds = %22 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #15 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false), !annotation !7 - %30 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #15 - %31 = tail call i32 @qemu_get_thread_id() #15 - %32 = load i64, ptr %3, align 8 - %33 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %34 = load i64, ptr %33, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.35, i32 noundef %31, i64 noundef %32, i64 noundef %34, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19) #15 + %29 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #15 + %30 = tail call i32 @qemu_get_thread_id() #15 + %31 = load i64, ptr %3, align 8 + %32 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %33 = load i64, ptr %32, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.35, i32 noundef %30, i64 noundef %31, i64 noundef %33, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19) #15 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #15 br label %trace_job_state_transition.exit -35: ; preds = %26 +34: ; preds = %26 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.36, ptr noundef nonnull %0, i32 noundef %10, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19) #15 br label %trace_job_state_transition.exit -trace_job_state_transition.exit: ; preds = %8, %21, %23, %29, %35 - %36 = load i8, ptr %14, align 1, !range !4, !noundef !5 - %37 = trunc nuw i8 %36 to i1 - br i1 %37, label %39, label %38 +trace_job_state_transition.exit: ; preds = %8, %21, %23, %28, %34 + %35 = load i8, ptr %14, align 1, !range !4, !noundef !5 + %36 = trunc nuw i8 %35 to i1 + br i1 %36, label %38, label %37 -38: ; preds = %trace_job_state_transition.exit +37: ; preds = %trace_job_state_transition.exit tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str, i32 noundef 215, ptr noundef nonnull @__PRETTY_FUNCTION__.job_state_transition_locked) #17 unreachable -39: ; preds = %trace_job_state_transition.exit +38: ; preds = %trace_job_state_transition.exit store i32 %1, ptr %4, align 4 - %40 = load ptr, ptr %0, align 8 - %41 = icmp eq ptr %40, null + %39 = load ptr, ptr %0, align 8 + %40 = icmp eq ptr %39, null %.not = icmp eq i32 %1, %5 - %or.cond = select i1 %41, i1 true, i1 %.not - br i1 %or.cond, label %43, label %42 + %or.cond = select i1 %40, i1 true, i1 %.not + br i1 %or.cond, label %42, label %41 -42: ; preds = %39 - tail call void @qapi_event_send_job_status_change(ptr noundef nonnull %40, i32 noundef %1) #15 - br label %43 +41: ; preds = %38 + tail call void @qapi_event_send_job_status_change(ptr noundef nonnull %39, i32 noundef %1) #15 + br label %42 -43: ; preds = %42, %39 +42: ; preds = %41, %38 ret void } diff --git a/bench/quantlib/optimized/perturbativebarrieroptionengine.ll b/bench/quantlib/optimized/perturbativebarrieroptionengine.ll index 9bc35156121..5d2bedc22d9 100644 --- a/bench/quantlib/optimized/perturbativebarrieroptionengine.ll +++ b/bench/quantlib/optimized/perturbativebarrieroptionengine.ll @@ -7160,11 +7160,11 @@ for.cond12.preheader: ; preds = %if.then8, %for.inc3 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 = phi i32 [ 1, %if.then8 ], [ %inc, %for.inc31 ] %.lcssa157159 = phi double [ 0.000000e+00, %if.then8 ], [ %8, %for.inc31 ] %idxprom = zext nneg i32 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 to i64 - %gep189 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep188, i64 0, i64 %idxprom - %2 = load double, ptr %gep189, align 8, !tbaa !107 + %arrayidx16 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep188, i64 0, i64 %idxprom + %2 = load double, ptr %arrayidx16, align 8, !tbaa !107 %idxprom21 = zext nneg i32 %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE1I.0 to i64 - %gep191 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep190, i64 0, i64 %idxprom21 - %3 = load double, ptr %gep191, align 8, !tbaa !107 + %arrayidx24 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep190, i64 0, i64 %idxprom21 + %3 = load double, ptr %arrayidx24, align 8, !tbaa !107 br label %for.body14 for.body14: ; preds = %for.cond12.preheader, %for.body14 @@ -7429,9 +7429,9 @@ for.cond109.preheader: ; preds = %if.end104, %for.inc %.pre163 = phi i32 [ 1, %if.end104 ], [ %inc153, %for.inc152 ] %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE3BVN.promoted = phi double [ %57, %if.end104 ], [ %_ZZN8QuantLib12_GLOBAL__N_13ND2EdddE3BVN.promoted160, %for.inc152 ] %idxprom113 = zext nneg i32 %.pre163 to i64 - %gep = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep, i64 0, i64 %idxprom113 - %58 = load double, ptr %gep, align 8, !tbaa !107 - %gep187 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep186, i64 0, i64 %idxprom113 + %arrayidx116 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep, i64 0, i64 %idxprom113 + %58 = load double, ptr %arrayidx116, align 8, !tbaa !107 + %arrayidx131 = getelementptr inbounds [11 x [4 x double]], ptr %invariant.gep186, i64 0, i64 %idxprom113 br label %for.body111 for.body111: ; preds = %for.cond109.preheader, %for.inc149 @@ -7451,7 +7451,7 @@ for.body111: ; preds = %for.cond109.prehead if.then127: ; preds = %for.body111 %sub120 = fsub double 1.000000e+00, %square147 %square148 = fmul double %sub120, %sub120 - %61 = load double, ptr %gep187, align 8, !tbaa !107 + %61 = load double, ptr %arrayidx131, align 8, !tbaa !107 %mul132 = fmul double %div105, %61 %call133 = tail call double @exp(double noundef %div125) #31, !tbaa !108 %mul134 = fmul double %mul132, %call133 diff --git a/bench/ruby/optimized/cp949.ll b/bench/ruby/optimized/cp949.ll index 701d8c343ea..01221766405 100644 --- a/bench/ruby/optimized/cp949.ll +++ b/bench/ruby/optimized/cp949.ll @@ -60,7 +60,7 @@ define internal range(i32 -2147483647, -2147483648) i32 @cp949_mbc_enc_len(ptr n %27 = select i1 %26, i32 2, i32 -1 br label %28 -28: ; preds = %20, %16, %11 +28:; preds = %20, %16, %11 %.0 = phi i32 [ %13, %11 ], [ %19, %16 ], [ %27, %20 ] ret i32 %.0 } diff --git a/bench/ruby/optimized/euc_tw.ll b/bench/ruby/optimized/euc_tw.ll index 7407dc5532e..4ede577d17c 100644 --- a/bench/ruby/optimized/euc_tw.ll +++ b/bench/ruby/optimized/euc_tw.ll @@ -60,16 +60,16 @@ define internal range(i32 -2147483647, -2147483648) i32 @euctw_mbc_enc_len(ptr n %28 = icmp slt i8 %26, 0 br i1 %28, label %29, label %32 -29: ; preds = %20 +29:; preds = %20 %30 = icmp eq i8 %26, -1 %31 = select i1 %30, i32 2, i32 -1 br label %56 -32: ; preds = %20 +32:; preds = %20 %33 = icmp eq ptr %22, %1 br i1 %33, label %56, label %34 -34: ; preds = %32 +34: ; preds = %32 %35 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %27 %36 = getelementptr inbounds nuw i8, ptr %0, i64 3 %37 = load i8, ptr %22, align 1, !tbaa !6 @@ -80,16 +80,16 @@ define internal range(i32 -2147483647, -2147483648) i32 @euctw_mbc_enc_len(ptr n %42 = icmp slt i8 %40, 0 br i1 %42, label %43, label %46 -43: ; preds = %34 +43:; preds = %34 %44 = icmp eq i8 %40, -1 %45 = select i1 %44, i32 3, i32 -1 br label %56 -46: ; preds = %34 +46:; preds = %34 %47 = icmp eq ptr %36, %1 br i1 %47, label %56, label %48 -48: ; preds = %46 +48:; preds = %46 %49 = getelementptr inbounds nuw [4 x [256 x i8]], ptr @trans, i64 0, i64 %41 %50 = load i8, ptr %36, align 1, !tbaa !6 %51 = zext i8 %50 to i64 diff --git a/bench/ruby/optimized/regcomp.ll b/bench/ruby/optimized/regcomp.ll index 3de15d00b17..70f3f0e1def 100644 --- a/bench/ruby/optimized/regcomp.ll +++ b/bench/ruby/optimized/regcomp.ll @@ -11110,7 +11110,7 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou br label %21 21: ; preds = %.lr.ph14, %._crit_edge11 - %.113 = phi i64 [ 0, %.lr.ph14 ], [ %77, %._crit_edge11 ] + %.113 = phi i64 [ 0, %.lr.ph14 ], [ %78, %._crit_edge11 ] %.06912 = phi i32 [ 0, %.lr.ph14 ], [ %.170, %._crit_edge11 ] %22 = getelementptr i8, ptr %0, i64 %.113 br i1 %.not, label %27, label %23 @@ -11153,7 +11153,7 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou %wide.trip.count = zext nneg i32 %.170 to i64 br label %.lr.ph -44: ; preds = %63 +44: ; preds = %64 %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 %.preheader, label %.lr.ph, !llvm.loop !288 @@ -11190,11 +11190,11 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou 54: ; preds = %.lr.ph8.us, %54 %indvars.iv24 = phi i64 [ 0, %.lr.ph8.us ], [ %indvars.iv.next25, %54 ] - %gep.us = getelementptr [13 x [18 x i8]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv24 - %55 = load i8, ptr %gep.us, align 1, !tbaa !34 - %56 = zext i8 %55 to i64 - %57 = getelementptr i8, ptr %3, i64 %56 - store i8 %49, ptr %57, align 1, !tbaa !34 + %55 = getelementptr [13 x [18 x i8]], ptr %invariant.gep.us, i64 0, i64 %indvars.iv24 + %56 = load i8, ptr %55, align 1, !tbaa !34 + %57 = zext i8 %56 to i64 + %58 = getelementptr i8, ptr %3, i64 %57 + store i8 %49, ptr %58, align 1, !tbaa !34 %indvars.iv.next25 = add nuw nsw i64 %indvars.iv24, 1 %exitcond28.not = icmp eq i64 %indvars.iv.next25, %wide.trip.count27 br i1 %exitcond28.not, label %._crit_edge.us, label %54, !llvm.loop !289 @@ -11206,47 +11206,47 @@ define internal fastcc range(i32 -6, 2) i32 @set_bm_skip(ptr noundef %0, ptr nou .lr.ph: ; preds = %.lr.ph.preheader, %44 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %44 ] - %58 = getelementptr [13 x %struct.OnigCaseFoldCodeItem], ptr %7, i64 0, i64 %indvars.iv - %59 = getelementptr inbounds nuw i8, ptr %58, i64 4 - %60 = load i32, ptr %59, align 4, !tbaa !164 - %.not74 = icmp eq i32 %60, 1 - br i1 %.not74, label %61, label %.loopexit - -61: ; preds = %.lr.ph - %62 = load i32, ptr %58, align 4, !tbaa !162 - %.not75 = icmp eq i32 %62, %.071 - br i1 %.not75, label %63, label %.loopexit - -63: ; preds = %61 - %64 = load ptr, ptr %20, align 8, !tbaa !167 - %65 = getelementptr inbounds nuw i8, ptr %58, i64 8 - %66 = load i32, ptr %65, align 4, !tbaa !7 - %67 = getelementptr [13 x [18 x i8]], ptr %6, i64 0, i64 %indvars.iv - %68 = call i32 %64(i32 noundef %66, ptr noundef %67, ptr noundef nonnull %9) #20 - %.not76 = icmp eq i32 %68, %.071 + %59 = getelementptr [13 x %struct.OnigCaseFoldCodeItem], ptr %7, i64 0, i64 %indvars.iv + %60 = getelementptr inbounds nuw i8, ptr %59, i64 4 + %61 = load i32, ptr %60, align 4, !tbaa !164 + %.not74 = icmp eq i32 %61, 1 + br i1 %.not74, label %62, label %.loopexit + +62: ; preds = %.lr.ph + %63 = load i32, ptr %59, align 4, !tbaa !162 + %.not75 = icmp eq i32 %63, %.071 + br i1 %.not75, label %64, label %.loopexit + +64: ; preds = %62 + %65 = load ptr, ptr %20, align 8, !tbaa !167 + %66 = getelementptr inbounds nuw i8, ptr %59, i64 8 + %67 = load i32, ptr %66, align 4, !tbaa !7 + %68 = getelementptr [13 x [18 x i8]], ptr %6, i64 0, i64 %indvars.iv + %69 = call i32 %64(i32 noundef %67, ptr noundef %68, ptr noundef nonnull %9) #20 + %.not76 = icmp eq i32 %69, %.071 br i1 %.not76, label %44, label %.loopexit .lr.ph10.split: ; preds = %.lr.ph10.split.preheader, %.lr.ph10.split %indvars.iv19 = phi i64 [ 0, %.lr.ph10.split.preheader ], [ %indvars.iv.next20, %.lr.ph10.split ] - %69 = add i64 %.113, %indvars.iv19 - %70 = sub i64 %12, %69 - %71 = trunc i64 %70 to i8 - %72 = getelementptr i8, ptr %22, i64 %indvars.iv19 - %73 = load i8, ptr %72, align 1, !tbaa !34 - %74 = zext i8 %73 to i64 - %75 = getelementptr i8, ptr %3, i64 %74 - store i8 %71, ptr %75, align 1, !tbaa !34 + %70 = add i64 %.113, %indvars.iv19 + %71 = sub i64 %12, %70 + %72 = trunc i64 %71 to i8 + %73 = getelementptr i8, ptr %22, i64 %indvars.iv19 + %74 = load i8, ptr %73, align 1, !tbaa !34 + %75 = zext i8 %74 to i64 + %76 = getelementptr i8, ptr %3, i64 %75 + store i8 %72, ptr %76, align 1, !tbaa !34 %indvars.iv.next20 = add nuw nsw i64 %indvars.iv19, 1 %exitcond23.not = icmp eq i64 %indvars.iv.next20, %wide.trip.count22 br i1 %exitcond23.not, label %._crit_edge11, label %.lr.ph10.split, !llvm.loop !290 ._crit_edge11: ; preds = %.lr.ph10.split, %._crit_edge.us, %.preheader.thread, %.preheader - %76 = sext i32 %.071 to i64 - %77 = add nsw i64 %.113, %76 - %78 = icmp ult i64 %77, %12 - br i1 %78, label %21, label %.loopexit, !llvm.loop !291 + %77 = sext i32 %.071 to i64 + %78 = add nsw i64 %.113, %77 + %79 = icmp ult i64 %78, %12 + br i1 %79, label %21, label %.loopexit, !llvm.loop !291 -.loopexit: ; preds = %._crit_edge11, %63, %.lr.ph, %61, %.preheader4, %5 +.loopexit: ; preds = %._crit_edge11, %64, %.lr.ph, %62, %.preheader4, %5 %.0 = phi i32 [ -6, %5 ], [ 0, %.preheader4 ], [ 1, %61 ], [ 1, %.lr.ph ], [ 1, %63 ], [ 0, %._crit_edge11 ] call void @llvm.lifetime.end.p0(i64 260, ptr nonnull %7) #20 call void @llvm.lifetime.end.p0(i64 234, ptr nonnull %6) #20 diff --git a/bench/sdl/optimized/SDL_alsa_audio.ll b/bench/sdl/optimized/SDL_alsa_audio.ll index c19a45782c4..af7a4556167 100644 --- a/bench/sdl/optimized/SDL_alsa_audio.ll +++ b/bench/sdl/optimized/SDL_alsa_audio.ll @@ -2337,12 +2337,12 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 .loopexit.i: ; preds = %62 %.pre.i = load ptr, ptr %11, align 8 - %.pre22.i = load ptr, ptr %.pre.i, align 8 - %.not72.i.i = icmp eq ptr %.pre22.i, null + %.pre23.i = load ptr, ptr %.pre.i, align 8 + %.not72.i.i = icmp eq ptr %.pre23.i, null br i1 %.not72.i.i, label %.thread48, label %.lr.ph75.i.i .lr.ph75.i.i: ; preds = %.loopexit.i, %110 - %66 = phi ptr [ %112, %110 ], [ %.pre22.i, %.loopexit.i ] + %66 = phi ptr [ %112, %110 ], [ %.pre23.i, %.loopexit.i ] %.04573.i.i = phi ptr [ %111, %110 ], [ %.pre.i, %.loopexit.i ] %67 = getelementptr inbounds nuw i8, ptr %66, i64 4 %68 = load i32, ptr %67, align 4 @@ -2367,7 +2367,7 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 .thread82.i.i: ; preds = %72 %76 = load ptr, ptr %.04573.i.i, align 8 %77 = getelementptr inbounds nuw i8, ptr %76, i64 8 - br label %alsa_chmap_has_duplicate_position.exit.i15.i + br label %alsa_chmap_has_duplicate_position.exit.i16.i ._crit_edge.i5.i: ; preds = %72 %78 = zext i32 %75 to i64 @@ -2381,53 +2381,53 @@ alsa_chmap_cfg_ordered_fixed_or_paired.exit.i: ; preds = %60 84: ; preds = %._crit_edge.i5.i call fastcc void @sdl_6chans_set_rear_or_side_channels_from_alsa_6chans(ptr noundef %17, ptr noundef nonnull %82) - %.pre.i18.i = load i32, ptr %16, align 4 + %.pre.i19.i = load i32, ptr %16, align 4 br label %85 85: ; preds = %84, %._crit_edge.i5.i - %86 = phi i32 [ %.pre.i18.i, %84 ], [ %75, %._crit_edge.i5.i ] + %86 = phi i32 [ %.pre.i19.i, %84 ], [ %75, %._crit_edge.i5.i ] %87 = icmp ult i32 %86, 2 - br i1 %87, label %alsa_chmap_has_duplicate_position.exit.i15.i, label %.lr.ph.i.preheader.i6.i + br i1 %87, label %alsa_chmap_has_duplicate_position.exit.i16.i, label %.lr.ph.i.preheader.i7.i -.lr.ph.i.preheader.i6.i: ; preds = %85 - %zext.i7.i = zext i32 %86 to i64 - br label %.lr.ph.i.i8.i +.lr.ph.i.preheader.i7.i: ; preds = %85 + %zext.i8.i = zext i32 %86 to i64 + br label %.lr.ph.i.i9.i -.lr.ph.i.i8.i: ; preds = %._crit_edge.i.i13.i, %.lr.ph.i.preheader.i6.i - %indvars.iv.i.i9.i = phi i64 [ %indvars.iv.next.i.i14.i, %._crit_edge.i.i13.i ], [ 1, %.lr.ph.i.preheader.i6.i ] - %88 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i.i9.i +.lr.ph.i.i9.i: ; preds = %._crit_edge.i.i14.i, %.lr.ph.i.preheader.i7.i + %indvars.iv.i.i10.i = phi i64 [ %indvars.iv.next.i.i15.i, %._crit_edge.i.i13.i ], [ 1, %.lr.ph.i.preheader.i6.i ] + %88 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i.i10.i %89 = load i32, ptr %88, align 4 br label %91 90: ; preds = %91 - %indvars.iv.next.i11.i = add nuw nsw i64 %indvars.iv.i10.i, 1 - %.not17.i.i12.i = icmp eq i64 %indvars.iv.i.i9.i, %indvars.iv.next.i11.i - br i1 %.not17.i.i12.i, label %._crit_edge.i.i13.i, label %91, !llvm.loop !18 + %indvars.iv.next.i12.i = add nuw nsw i64 %indvars.iv.i11.i, 1 + %.not17.i.i13.i = icmp eq i64 %indvars.iv.i.i10.i, %indvars.iv.next.i12.i + br i1 %.not17.i.i13.i, label %._crit_edge.i.i14.i, label %91, !llvm.loop !18 -91: ; preds = %90, %.lr.ph.i.i8.i - %indvars.iv.i10.i = phi i64 [ %indvars.iv.next.i11.i, %90 ], [ 0, %.lr.ph.i.i8.i ] - %92 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i10.i +91: ; preds = %90, %.lr.ph.i.i9.i + %indvars.iv.i11.i = phi i64 [ %indvars.iv.next.i12.i, %90 ], [ 0, %.lr.ph.i.i8.i ] + %92 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i11.i %93 = load i32, ptr %92, align 4 %94 = icmp eq i32 %93, %89 - br i1 %94, label %alsa_chmap_has_duplicate_position.exit.thread.i17.i, label %90 + br i1 %94, label %alsa_chmap_has_duplicate_position.exit.thread.i18.i, label %90 -alsa_chmap_has_duplicate_position.exit.thread.i17.i: ; preds = %91 +alsa_chmap_has_duplicate_position.exit.thread.i18.i: ; preds = %91 call void (i32, ptr, ...) @SDL_LogDebug_REAL(i32 noundef 4, ptr noundef nonnull @.str.108) #8 - br label %.thread.i16.i + br label %.thread.i17.i -._crit_edge.i.i13.i: ; preds = %90 - %indvars.iv.next.i.i14.i = add nuw nsw i64 %indvars.iv.i.i9.i, 1 - %95 = icmp eq i64 %indvars.iv.next.i.i14.i, %zext.i7.i - br i1 %95, label %alsa_chmap_has_duplicate_position.exit.i15.i, label %.lr.ph.i.i8.i, !llvm.loop !19 +._crit_edge.i.i14.i: ; preds = %90 + %indvars.iv.next.i.i15.i = add nuw nsw i64 %indvars.iv.i.i10.i, 1 + %95 = icmp eq i64 %indvars.iv.next.i.i15.i, %zext.i8.i + br i1 %95, label %alsa_chmap_has_duplicate_position.exit.i16.i, label %.lr.ph.i.i9.i, !llvm.loop !19 -alsa_chmap_has_duplicate_position.exit.i15.i: ; preds = %._crit_edge.i.i13.i, %85, %.thread82.i.i +alsa_chmap_has_duplicate_position.exit.i16.i: ; preds = %._crit_edge.i.i14.i, %85, %.thread82.i.i %96 = phi ptr [ %77, %.thread82.i.i ], [ %82, %85 ], [ %82, %._crit_edge.i.i13.i ] call void (i32, ptr, ...) @SDL_LogDebug_REAL(i32 noundef 4, ptr noundef nonnull @.str.107) #8 %97 = load i32, ptr %16, align 4 %.not5264.i.i = icmp eq i32 %97, 0 br i1 %.not5264.i.i, label %._crit_edge68.split.thread.i.i, label %.preheader.preheader.i.i -.preheader.preheader.i.i: ; preds = %alsa_chmap_has_duplicate_position.exit.i15.i +.preheader.preheader.i.i: ; preds = %alsa_chmap_has_duplicate_position.exit.i16.i %98 = zext i32 %97 to i64 br label %.preheader.i.i @@ -2440,7 +2440,7 @@ alsa_chmap_has_duplicate_position.exit.i15.i: ; preds = %._crit_edge.i.i13.i ._crit_edge68.split.i.i: ; preds = %..loopexit_crit_edge.i.i %101 = icmp eq i32 %.1.i.i, %97 - br i1 %101, label %._crit_edge68.split.thread.i.i, label %.thread.i16.i + br i1 %101, label %._crit_edge68.split.thread.i.i, label %.thread.i17.i 102: ; preds = %103 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 @@ -2464,16 +2464,16 @@ alsa_chmap_has_duplicate_position.exit.i15.i: ; preds = %._crit_edge.i.i13.i %.not52.i.i = icmp eq i64 %indvars.iv.next80.i.i, %98 br i1 %.not52.i.i, label %._crit_edge68.split.i.i, label %.preheader.i.i, !llvm.loop !23 -.thread.i16.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.thread.i17.i +.thread.i17.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.thread.i18.i call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #8 br label %110 -._crit_edge68.split.thread.i.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.i15.i +._crit_edge68.split.thread.i.i: ; preds = %._crit_edge68.split.i.i, %alsa_chmap_has_duplicate_position.exit.i16.i %109 = call fastcc i32 @alsa_chmap_install(ptr noundef nonnull %0, ptr noundef nonnull %17) call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #8 br label %alsa_chmap_cfg_ordered.exit -110: ; preds = %.thread.i16.i, %70, %.lr.ph75.i.i +110: ; preds = %.thread.i17.i, %70, %.lr.ph75.i.i %111 = getelementptr inbounds nuw i8, ptr %.04573.i.i, i64 8 %112 = load ptr, ptr %111, align 8 %.not.i3.i = icmp eq ptr %112, null diff --git a/bench/sdl/optimized/SDL_audioresample.ll b/bench/sdl/optimized/SDL_audioresample.ll index 8965501a9aa..8977276e2fa 100644 --- a/bench/sdl/optimized/SDL_audioresample.ll +++ b/bench/sdl/optimized/SDL_audioresample.ll @@ -16,7 +16,7 @@ define hidden void @SDL_SetupAudioResampler() local_unnamed_addr #0 { %1 = alloca [24 x float], align 16 %2 = alloca [121 x float], align 16 %3 = tail call zeroext i1 @SDL_ShouldInit_REAL(ptr noundef nonnull @SDL_SetupAudioResampler.init) #8 - br i1 %3, label %.preheader, label %103 + br i1 %3, label %.preheader, label %101 .preheader: ; preds = %0, %.preheader %.016.i.i.i = phi float [ %7, %.preheader ], [ 1.000000e+00, %0 ] @@ -102,14 +102,14 @@ BesselI0.exit32.i.i: ; preds = %28 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 121 br i1 %exitcond.not.i.i, label %.preheader.i.i, label %18, !llvm.loop !6 -.preheader.i.i: ; preds = %BesselI0.exit32.i.i, %100 +.preheader.i.i: ; preds = %BesselI0.exit32.i.i, %98 %indvars.iv46.i.i = phi i64 [ %indvars.iv.next47.i.i, %100 ], [ 0, %BesselI0.exit32.i.i ] %51 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %indvars.iv46.i.i %52 = sub nuw nsw i64 7, %indvars.iv46.i.i %53 = getelementptr inbounds nuw [8 x [10 x %union.Cubic]], ptr @ResamplerFilter, i64 0, i64 %52 br label %54 -54: ; preds = %54, %.preheader.i.i +54:; preds = %54, %.preheader.i.i %indvars.iv42.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next43.i.i, %54 ] %55 = shl nuw nsw i64 %indvars.iv42.i.i, 3 %56 = add nuw nsw i64 %55, %indvars.iv46.i.i @@ -166,33 +166,33 @@ BesselI0.exit32.i.i: ; preds = %28 store float %98, ptr %99, align 4 %indvars.iv.next43.i.i = add nuw nsw i64 %indvars.iv42.i.i, 1 %exitcond45.not.i.i = icmp eq i64 %indvars.iv.next43.i.i, 5 - br i1 %exitcond45.not.i.i, label %100, label %54, !llvm.loop !7 + br i1 %exitcond45.not.i.i, label %98, label %54, !llvm.loop !7 -100: ; preds = %54 +98: ; preds = %54 %indvars.iv.next47.i.i = add nuw nsw i64 %indvars.iv46.i.i, 1 %exitcond49.not.i.i = icmp eq i64 %indvars.iv.next47.i.i, 8 br i1 %exitcond49.not.i.i, label %GenerateResamplerFilter.exit.i, label %.preheader.i.i, !llvm.loop !8 -GenerateResamplerFilter.exit.i: ; preds = %100 +GenerateResamplerFilter.exit.i: ; preds = %98 call void @llvm.lifetime.end.p0(i64 484, ptr nonnull %2) #8 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %1) #8 - br label %101 + br label %99 -101: ; preds = %101, %GenerateResamplerFilter.exit.i +99: ; preds = %99, %GenerateResamplerFilter.exit.i %indvars.iv.i = phi i64 [ 0, %GenerateResamplerFilter.exit.i ], [ %indvars.iv.next.i, %101 ] - %102 = getelementptr inbounds nuw [8 x ptr], ptr @ResampleFrame, i64 0, i64 %indvars.iv.i - store ptr @ResampleFrame_Generic, ptr %102, align 8 + %100 = getelementptr inbounds nuw [8 x ptr], ptr @ResampleFrame, i64 0, i64 %indvars.iv.i + store ptr @ResampleFrame_Generic, ptr %100, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 8 - br i1 %exitcond.not.i, label %SetupAudioResampler.exit, label %101, !llvm.loop !9 + br i1 %exitcond.not.i, label %SetupAudioResampler.exit, label %99, !llvm.loop !9 -SetupAudioResampler.exit: ; preds = %101 +SetupAudioResampler.exit: ; preds = %99 store ptr @ResampleFrame_Mono, ptr @ResampleFrame, align 16 store ptr @ResampleFrame_Stereo, ptr getelementptr inbounds nuw (i8, ptr @ResampleFrame, i64 8), align 8 tail call void @SDL_SetInitialized_REAL(ptr noundef nonnull @SDL_SetupAudioResampler.init, i1 noundef zeroext true) #8 - br label %103 + br label %101 -103: ; preds = %SetupAudioResampler.exit, %0 +101: ; preds = %SetupAudioResampler.exit, %0 ret void } diff --git a/bench/sdl/optimized/SDL_gamepad.ll b/bench/sdl/optimized/SDL_gamepad.ll index 1b652605960..c45c63dc3eb 100644 --- a/bench/sdl/optimized/SDL_gamepad.ll +++ b/bench/sdl/optimized/SDL_gamepad.ll @@ -677,19 +677,19 @@ define hidden void @SDL_GamepadSensorWatcher(i64 noundef %0, i32 noundef %1, i64 %.not27 = icmp eq ptr %.026, null br i1 %.not27, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %5, %51 +.lr.ph: ; preds = %5, %49 %.028 = phi ptr [ %.0, %51 ], [ %.026, %5 ] %8 = load ptr, ptr %.028, align 8 %9 = getelementptr inbounds nuw i8, ptr %8, i64 248 %10 = load ptr, ptr %9, align 8 %.not17 = icmp eq ptr %10, null - br i1 %.not17, label %29, label %11 + br i1 %.not17, label %28, label %11 11: ; preds = %.lr.ph %12 = getelementptr inbounds nuw i8, ptr %8, i64 244 %13 = load i32, ptr %12, align 4 %14 = icmp eq i32 %13, %1 - br i1 %14, label %15, label %29 + br i1 %14, label %15, label %28 15: ; preds = %11 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #10 @@ -697,95 +697,95 @@ define hidden void @SDL_GamepadSensorWatcher(i64 noundef %0, i32 noundef %1, i64 %16 = getelementptr inbounds nuw i8, ptr %8, i64 272 br label %17 -17: ; preds = %27, %15 +17: ; preds = %26, %15 %indvars.iv16.i = phi i64 [ 0, %15 ], [ %indvars.iv.next17.i, %27 ] %18 = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv16.i store float 0.000000e+00, ptr %18, align 4 %19 = getelementptr inbounds nuw [3 x [3 x float]], ptr %16, i64 0, i64 %indvars.iv16.i br label %20 -20: ; preds = %20, %17 +19: ; preds = %19, %17 %indvars.iv.i = phi i64 [ 0, %17 ], [ %indvars.iv.next.i, %20 ] - %21 = phi float [ 0.000000e+00, %17 ], [ %26, %20 ] - %22 = getelementptr inbounds nuw [3 x float], ptr %19, i64 0, i64 %indvars.iv.i - %23 = load float, ptr %22, align 4 - %24 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i - %25 = load float, ptr %24, align 4 - %26 = call float @llvm.fmuladd.f32(float %23, float %25, float %21) - store float %26, ptr %18, align 4 + %20 = phi float [ 0.000000e+00, %17 ], [ %25, %20 ] + %21 = getelementptr inbounds nuw [3 x float], ptr %19, i64 0, i64 %indvars.iv.i + %22 = load float, ptr %21, align 4 + %23 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i + %24 = load float, ptr %23, align 4 + %25 = call float @llvm.fmuladd.f32(float %22, float %24, float %20) + store float %25, ptr %18, align 4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 3 - br i1 %exitcond.not.i, label %27, label %20, !llvm.loop !7 + br i1 %exitcond.not.i, label %26, label %19, !llvm.loop !7 -27: ; preds = %20 +26: ; preds = %19 %indvars.iv.next17.i = add nuw nsw i64 %indvars.iv16.i, 1 %exitcond19.not.i = icmp eq i64 %indvars.iv.next17.i, 3 br i1 %exitcond19.not.i, label %AdjustSensorOrientation.exit, label %17, !llvm.loop !8 -AdjustSensorOrientation.exit: ; preds = %27 - %28 = load ptr, ptr %.028, align 8 - call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %28, i32 noundef 1, i64 noundef %2, ptr noundef nonnull %6, i32 noundef 3) #10 +AdjustSensorOrientation.exit: ; preds = %26 + %27 = load ptr, ptr %.028, align 8 + call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %27, i32 noundef 1, i64 noundef %2, ptr noundef nonnull %6, i32 noundef 3) #10 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #10 %.pre = load ptr, ptr %.028, align 8 - br label %29 + br label %28 -29: ; preds = %AdjustSensorOrientation.exit, %11, %.lr.ph - %30 = phi ptr [ %.pre, %AdjustSensorOrientation.exit ], [ %8, %11 ], [ %8, %.lr.ph ] - %31 = getelementptr inbounds nuw i8, ptr %30, i64 264 - %32 = load ptr, ptr %31, align 8 - %.not18 = icmp eq ptr %32, null - br i1 %.not18, label %51, label %33 +28: ; preds = %AdjustSensorOrientation.exit, %11, %.lr.ph + %29 = phi ptr [ %.pre, %AdjustSensorOrientation.exit ], [ %8, %11 ], [ %8, %.lr.ph ] + %30 = getelementptr inbounds nuw i8, ptr %29, i64 264 + %31 = load ptr, ptr %30, align 8 + %.not18 = icmp eq ptr %31, null + br i1 %.not18, label %49, label %32 -33: ; preds = %29 - %34 = getelementptr inbounds nuw i8, ptr %30, i64 256 - %35 = load i32, ptr %34, align 8 - %36 = icmp eq i32 %35, %1 - br i1 %36, label %37, label %51 +32: ; preds = %28 + %33 = getelementptr inbounds nuw i8, ptr %29, i64 256 + %34 = load i32, ptr %33, align 8 + %35 = icmp eq i32 %34, %1 + br i1 %35, label %36, label %49 -37: ; preds = %33 +36: ; preds = %32 call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #10 call void @SDL_AssertJoysticksLocked() #10 - %38 = getelementptr inbounds nuw i8, ptr %30, i64 272 - br label %39 + %37 = getelementptr inbounds nuw i8, ptr %29, i64 272 + br label %38 -39: ; preds = %49, %37 +38: ; preds = %47, %36 %indvars.iv16.i19 = phi i64 [ 0, %37 ], [ %indvars.iv.next17.i23, %49 ] - %40 = getelementptr inbounds nuw float, ptr %7, i64 %indvars.iv16.i19 - store float 0.000000e+00, ptr %40, align 4 + %39 = getelementptr inbounds nuw float, ptr %7, i64 %indvars.iv16.i19 + store float 0.000000e+00, ptr %39, align 4 %41 = getelementptr inbounds nuw [3 x [3 x float]], ptr %38, i64 0, i64 %indvars.iv16.i19 br label %42 -42: ; preds = %42, %39 +40: ; preds = %40, %38 %indvars.iv.i20 = phi i64 [ 0, %39 ], [ %indvars.iv.next.i21, %42 ] - %43 = phi float [ 0.000000e+00, %39 ], [ %48, %42 ] - %44 = getelementptr inbounds nuw [3 x float], ptr %41, i64 0, i64 %indvars.iv.i20 + %41 = phi float [ 0.000000e+00, %39 ], [ %48, %42 ] + %42 = getelementptr inbounds nuw [3 x float], ptr %41, i64 0, i64 %indvars.iv.i20 %45 = load float, ptr %44, align 4 - %46 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i20 + %46 = getelementptr inbounds nuw float, ptr %3, i64 %indvars.iv.i19 %47 = load float, ptr %46, align 4 %48 = call float @llvm.fmuladd.f32(float %45, float %47, float %43) store float %48, ptr %40, align 4 %indvars.iv.next.i21 = add nuw nsw i64 %indvars.iv.i20, 1 %exitcond.not.i22 = icmp eq i64 %indvars.iv.next.i21, 3 - br i1 %exitcond.not.i22, label %49, label %42, !llvm.loop !7 + br i1 %exitcond.not.i22, label %47, label %40, !llvm.loop !7 -49: ; preds = %42 +47: ; preds = %40 %indvars.iv.next17.i23 = add nuw nsw i64 %indvars.iv16.i19, 1 %exitcond19.not.i24 = icmp eq i64 %indvars.iv.next17.i23, 3 - br i1 %exitcond19.not.i24, label %AdjustSensorOrientation.exit25, label %39, !llvm.loop !8 + br i1 %exitcond19.not.i24, label %AdjustSensorOrientation.exit25, label %38, !llvm.loop !8 -AdjustSensorOrientation.exit25: ; preds = %49 - %50 = load ptr, ptr %.028, align 8 - call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %50, i32 noundef 2, i64 noundef %2, ptr noundef nonnull %7, i32 noundef 3) #10 +AdjustSensorOrientation.exit25: ; preds = %47 + %48 = load ptr, ptr %.028, align 8 + call void @SDL_SendJoystickSensor(i64 noundef %0, ptr noundef %48, i32 noundef 2, i64 noundef %2, ptr noundef nonnull %7, i32 noundef 3) #10 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #10 - br label %51 + br label %49 -51: ; preds = %29, %33, %AdjustSensorOrientation.exit25 - %52 = getelementptr inbounds nuw i8, ptr %.028, i64 80 - %.0 = load ptr, ptr %52, align 8 +49: ; preds = %28, %32, %AdjustSensorOrientation.exit25 + %50 = getelementptr inbounds nuw i8, ptr %.028, i64 80 + %.0 = load ptr, ptr %50, align 8 %.not = icmp eq ptr %.0, null br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !9 -._crit_edge: ; preds = %51, %5 +._crit_edge: ; preds = %49, %5 call void @SDL_UnlockJoysticks_REAL() #10 ret void } diff --git a/bench/slurm/optimized/cpu_frequency.ll b/bench/slurm/optimized/cpu_frequency.ll index 82bb6119d9b..220af47290a 100644 --- a/bench/slurm/optimized/cpu_frequency.ll +++ b/bench/slurm/optimized/cpu_frequency.ll @@ -500,24 +500,24 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc store i32 %177, ptr %180, align 4 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 63 - br i1 %exitcond.not.i.i, label %181, label %174, !llvm.loop !11 - -181: ; preds = %174 - %182 = load ptr, ptr @cpufreq, align 8 - %183 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %182, i64 %indvars.iv68, i32 3, i64 63 - store i32 %169, ptr %183, align 4 - %184 = load ptr, ptr @cpufreq, align 8 - %185 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %184, i64 %indvars.iv68, i32 1 - store i8 64, ptr %185, align 1 + br i1 %exitcond.not.i.i, label %180, label %174, !llvm.loop !11 + +180: ; preds = %174 + %181 = load ptr, ptr @cpufreq, align 8 + %182 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %181, i64 %indvars.iv68, i32 3, i64 63 + store i32 %169, ptr %182, align 4 + %183 = load ptr, ptr @cpufreq, align 8 + %184 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %183, i64 %indvars.iv68, i32 1 + store i8 64, ptr %184, align 1 br label %_cpu_freq_cpu_avail.exit .preheader31.i: ; preds = %160, %.loopexit.i %indvars.iv49.i = phi i64 [ %indvars.iv.next50.i, %.loopexit.i ], [ 0, %160 ] - %indvars.iv46.i = phi i32 [ %186, %.loopexit.i ], [ -1, %160 ] - %186 = add nsw i32 %indvars.iv46.i, 1 - %187 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %163, ptr noundef nonnull @.str.62, ptr noundef nonnull %3) #10 - %188 = icmp eq i32 %187, -1 - br i1 %188, label %209, label %.preheader29.i + %indvars.iv46.i = phi i32 [ %185, %.loopexit.i ], [ -1, %160 ] + %185 = add nsw i32 %indvars.iv46.i, 1 + %186 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %163, ptr noundef nonnull @.str.62, ptr noundef nonnull %3) #10 + %187 = icmp eq i32 %186, -1 + br i1 %187, label %204, label %.preheader29.i .preheader29.i: ; preds = %.preheader31.i %.not41.i = icmp eq i64 %indvars.iv49.i, 0 @@ -529,12 +529,12 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc %189 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %.pre58.i, i64 %indvars.iv68, i32 3 br label %190 -190: ; preds = %203, %.lr.ph.i +190: ; preds = %199, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %203 ] %191 = getelementptr inbounds nuw [64 x i32], ptr %189, i64 0, i64 %indvars.iv.i %192 = load i32, ptr %191, align 4 %193 = icmp ult i32 %.pre56.i, %192 - br i1 %193, label %.preheader.i, label %203 + br i1 %193, label %.preheader.i, label %199 .preheader.i: ; preds = %190 %194 = trunc nuw nsw i64 %indvars.iv.i to i32 @@ -544,23 +544,23 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc .lr.ph38.preheader.i: ; preds = %.preheader.i %sext.i = shl i64 %indvars.iv.i, 32 - %196 = ashr exact i64 %sext.i, 32 + %193 = ashr exact i64 %sext.i, 32 br label %.lr.ph38.i .lr.ph38.i: ; preds = %.lr.ph38.i, %.lr.ph38.preheader.i %indvars.iv51.i = phi i64 [ %indvars.iv49.i, %.lr.ph38.preheader.i ], [ %indvars.iv.next52.i, %.lr.ph38.i ] - %197 = load ptr, ptr @cpufreq, align 8 - %198 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %197, i64 %indvars.iv68, i32 3 - %199 = getelementptr inbounds [64 x i32], ptr %198, i64 0, i64 %indvars.iv51.i + %194 = load ptr, ptr @cpufreq, align 8 + %195 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %194, i64 %indvars.iv68, i32 3 + %199 = getelementptr inbounds [64 x i32], ptr %195, i64 0, i64 %indvars.iv51.i %200 = load i32, ptr %199, align 4 %201 = add nuw nsw i64 %indvars.iv51.i, 1 %202 = getelementptr inbounds [64 x i32], ptr %198, i64 0, i64 %201 store i32 %200, ptr %202, align 4 %indvars.iv.next52.i = add nsw i64 %indvars.iv51.i, -1 - %.not.not.i = icmp sgt i64 %indvars.iv51.i, %196 + %.not.not.i = icmp sgt i64 %indvars.iv51.i, %193 br i1 %.not.not.i, label %.lr.ph38.i, label %.loopexit.loopexit.i, !llvm.loop !12 -203: ; preds = %190 +199: ; preds = %190 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %indvars.iv49.i br i1 %exitcond.not.i, label %.loopexit.i, label %190, !llvm.loop !13 @@ -570,32 +570,32 @@ define dso_local void @cpu_freq_init(ptr noundef readonly captures(none) %0) loc %.pre57.i = load ptr, ptr @cpufreq, align 8 br label %.loopexit.i -.loopexit.i: ; preds = %203, %.loopexit.loopexit.i, %.preheader.i, %.preheader29.i - %204 = phi ptr [ %.pre58.i, %.preheader.i ], [ %.pre58.i, %.preheader29.i ], [ %.pre57.i, %.loopexit.loopexit.i ], [ %.pre58.i, %203 ] - %205 = phi i32 [ %.pre56.i, %.preheader.i ], [ %.pre56.i, %.preheader29.i ], [ %.pre.i, %.loopexit.loopexit.i ], [ %.pre56.i, %203 ] - %.02533.i = phi i32 [ %194, %.preheader.i ], [ 0, %.preheader29.i ], [ %194, %.loopexit.loopexit.i ], [ %186, %203 ] +.loopexit.i: ; preds = %199, %.loopexit.loopexit.i, %.preheader.i, %.preheader29.i + %200 = phi ptr [ %.pre58.i, %.preheader.i ], [ %.pre58.i, %.preheader29.i ], [ %.pre57.i, %.loopexit.loopexit.i ], [ %.pre58.i, %203 ] + %201 = phi i32 [ %.pre56.i, %.preheader.i ], [ %.pre56.i, %.preheader29.i ], [ %.pre.i, %.loopexit.loopexit.i ], [ %.pre56.i, %203 ] + %.02533.i = phi i32 [ %194, %.preheader.i ], [ 0, %.preheader29.i ], [ %194, %.loopexit.loopexit.i ], [ %185, %203 ] %206 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %204, i64 %indvars.iv68, i32 3 %207 = zext nneg i32 %.02533.i to i64 %208 = getelementptr inbounds nuw [64 x i32], ptr %206, i64 0, i64 %207 store i32 %205, ptr %208, align 4 %indvars.iv.next50.i = add nuw nsw i64 %indvars.iv49.i, 1 %exitcond55.not.i = icmp eq i64 %indvars.iv.next50.i, 63 - br i1 %exitcond55.not.i, label %214, label %.preheader31.i, !llvm.loop !14 - -209: ; preds = %.preheader31.i - %210 = trunc i64 %indvars.iv49.i to i8 - %211 = load ptr, ptr @cpufreq, align 8 - %212 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %211, i64 %indvars.iv68, i32 1 - store i8 %210, ptr %212, align 1 - %213 = call i32 @fclose(ptr noundef nonnull %163) + br i1 %exitcond55.not.i, label %209, label %.preheader31.i, !llvm.loop !14 + +204: ; preds = %.preheader31.i + %205 = trunc i64 %indvars.iv49.i to i8 + %206 = load ptr, ptr @cpufreq, align 8 + %207 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %206, i64 %indvars.iv68, i32 1 + store i8 %205, ptr %207, align 1 + %208 = call i32 @fclose(ptr noundef nonnull %163) br label %_cpu_freq_cpu_avail.exit -214: ; preds = %.loopexit.i - %215 = load ptr, ptr @cpufreq, align 8 - %216 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %215, i64 %indvars.iv68, i32 1 - store i8 63, ptr %216, align 1 - %217 = call i32 @fclose(ptr noundef nonnull %163) - %218 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.98) #10 +209: ; preds = %.loopexit.i + %210 = load ptr, ptr @cpufreq, align 8 + %211 = getelementptr inbounds nuw %struct.cpu_freq_data, ptr %210, i64 %indvars.iv68, i32 1 + store i8 63, ptr %211, align 1 + %212 = call i32 @fclose(ptr noundef nonnull %163) + %213 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.98) #10 br label %_cpu_freq_cpu_avail.exit _cpu_freq_cpu_avail.exit.thread: ; preds = %165, %168 @@ -603,40 +603,40 @@ _cpu_freq_cpu_avail.exit.thread: ; preds = %165, %168 call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %2) #10 br label %.loopexit -_cpu_freq_cpu_avail.exit: ; preds = %181, %209, %214 +_cpu_freq_cpu_avail.exit: ; preds = %180, %204, %209 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #10 call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %2) #10 - %219 = icmp eq i64 %indvars.iv68, 0 - br i1 %219, label %220, label %.loopexit + %214 = icmp eq i64 %indvars.iv68, 0 + br i1 %214, label %215, label %.loopexit -220: ; preds = %_cpu_freq_cpu_avail.exit - %221 = load i64, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 320), align 8 - %222 = and i64 %221, 2199023255552 - %.not46 = icmp eq i64 %222, 0 +215: ; preds = %_cpu_freq_cpu_avail.exit + %216 = load i64, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 320), align 8 + %217 = and i64 %216, 2199023255552 + %.not46 = icmp eq i64 %217, 0 br i1 %.not46, label %.loopexit, label %.preheader -.preheader: ; preds = %220 - %223 = load ptr, ptr @cpufreq, align 8 - %224 = getelementptr inbounds nuw i8, ptr %223, i64 1 - %225 = load i8, ptr %224, align 1 - %.not61 = icmp eq i8 %225, 0 +.preheader: ; preds = %215 + %218 = load ptr, ptr @cpufreq, align 8 + %219 = getelementptr inbounds nuw i8, ptr %218, i64 1 + %220 = load i8, ptr %219, align 1 + %.not61 = icmp eq i8 %220, 0 br i1 %.not61, label %.loopexit, label %.lr.ph55 .lr.ph55: ; preds = %.preheader, %233 %indvars.iv65 = phi i64 [ %indvars.iv.next66, %233 ], [ 0, %.preheader ] - %226 = call i32 @get_log_level() #10 - %227 = icmp sgt i32 %226, 2 - br i1 %227, label %228, label %233 + %221 = call i32 @get_log_level() #10 + %222 = icmp sgt i32 %221, 2 + br i1 %222, label %223, label %233 -228: ; preds = %.lr.ph55 +223: ; preds = %.lr.ph55 %229 = load ptr, ptr @cpufreq, align 8 %230 = getelementptr inbounds nuw i8, ptr %229, i64 4 %231 = getelementptr inbounds nuw [64 x i32], ptr %230, i64 0, i64 %indvars.iv65 %232 = load i32, ptr %231, align 4 call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.19, i32 noundef %232) #10 - br label %233 + br label %.loopexit -233: ; preds = %.lr.ph55, %228 +.loopexit: ; preds = %.lr.ph55, %228 %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, 1 %234 = load ptr, ptr @cpufreq, align 8 %235 = getelementptr inbounds nuw i8, ptr %234, i64 1 @@ -647,10 +647,10 @@ _cpu_freq_cpu_avail.exit: ; preds = %181, %209, %214 .loopexit: ; preds = %233, %.preheader, %_cpu_freq_cpu_avail.exit.thread, %220, %_cpu_freq_cpu_avail.exit, %.lr.ph58, %68 %indvars.iv.next69 = add nuw nsw i64 %indvars.iv68, 1 - %239 = load i16, ptr @cpu_freq_count, align 2 - %240 = zext i16 %239 to i64 - %241 = icmp samesign ult i64 %indvars.iv.next69, %240 - br i1 %241, label %.lr.ph58, label %.loopexit49, !llvm.loop !16 + %234 = load i16, ptr @cpu_freq_count, align 2 + %235 = zext i16 %234 to i64 + %236 = icmp samesign ult i64 %indvars.iv.next69, %235 + br i1 %236, label %.lr.ph58, label %.loopexit49, !llvm.loop !16 .loopexit49: ; preds = %.loopexit, %59, %13, %16, %1, %22 call void @llvm.lifetime.end.p0(i64 100, ptr nonnull %6) #10 @@ -2611,7 +2611,7 @@ define dso_local i32 @_cpu_freq_freqspec_num(i32 noundef %0, i32 noundef %1) loc tail call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.43, i32 noundef %0, i32 noundef %88) #10 br label %89 -89: ; preds = %84, %81 +89:; preds = %84, %81 %90 = load ptr, ptr @cpufreq, align 8 %91 = getelementptr inbounds %struct.cpu_freq_data, ptr %90, i64 %5, i32 3 %92 = getelementptr inbounds nuw [64 x i32], ptr %91, i64 0, i64 %indvars.iv.next diff --git a/bench/slurm/optimized/proc_args.ll b/bench/slurm/optimized/proc_args.ll index 6285503c69f..7a917eb8d6e 100644 --- a/bench/slurm/optimized/proc_args.ll +++ b/bench/slurm/optimized/proc_args.ll @@ -1662,124 +1662,124 @@ define dso_local noundef zeroext i1 @verify_socket_core_thread_count(ptr noundef 10: ; preds = %5 %11 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.46, ptr noundef nonnull @__func__.verify_socket_core_thread_count) #21 - br label %56 + br label %55 12: ; preds = %5 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(144) %9, i8 0, i64 144, i1 false) br label %.preheader -.preheader: ; preds = %12, %21 +.preheader: ; preds = %12, %20 %indvars.iv60 = phi i64 [ 0, %12 ], [ %indvars.iv.next61, %21 ] - %.055 = phi ptr [ %0, %12 ], [ %22, %21 ] + %.055 = phi ptr [ %0, %12 ], [ %21, %21 ] %13 = getelementptr inbounds nuw [3 x [48 x i8]], ptr %9, i64 0, i64 %indvars.iv60 br label %14 -14: ; preds = %.preheader, %16 +13: ; preds = %.preheader, %15 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %16 ] - %.153 = phi ptr [ %.055, %.preheader ], [ %17, %16 ] - %15 = load i8, ptr %.153, align 1 - switch i8 %15, label %16 [ + %.153 = phi ptr [ %.055, %.preheader ], [ %16, %16 ] + %14 = load i8, ptr %.153, align 1 + switch i8 %14, label %16 [ i8 0, label %.loopexit i8 58, label %.loopexit ] -16: ; preds = %14 - %17 = getelementptr inbounds nuw i8, ptr %.153, i64 1 - %18 = getelementptr inbounds nuw [48 x i8], ptr %13, i64 0, i64 %indvars.iv - store i8 %15, ptr %18, align 1 +15: ; preds = %13 + %16 = getelementptr inbounds nuw i8, ptr %.153, i64 1 + %17 = getelementptr inbounds nuw [48 x i8], ptr %13, i64 0, i64 %indvars.iv + store i8 %14, ptr %17, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 47 - br i1 %exitcond.not, label %thread-pre-split, label %14, !llvm.loop !13 + br i1 %exitcond.not, label %thread-pre-split, label %13, !llvm.loop !13 -thread-pre-split: ; preds = %16 - %.pr = load i8, ptr %17, align 1 +thread-pre-split: ; preds = %15 + %.pr = load i8, ptr %16, align 1 br label %.loopexit -.loopexit: ; preds = %14, %14, %thread-pre-split - %.151 = phi ptr [ %17, %thread-pre-split ], [ %.153, %14 ], [ %.153, %14 ] - %19 = phi i8 [ %.pr, %thread-pre-split ], [ %15, %14 ], [ %15, %14 ] - %20 = icmp eq i8 %19, 0 - br i1 %20, label %.split.loop.exit, label %21 +.loopexit: ; preds = %13, %13, %thread-pre-split + %.151 = phi ptr [ %16, %thread-pre-split ], [ %.153, %14 ], [ %.153, %14 ] + %18 = phi i8 [ %.pr, %thread-pre-split ], [ %14, %14 ], [ %14, %14 ] + %19 = icmp eq i8 %18, 0 + br i1 %19, label %.split.loop.exit, label %20 -21: ; preds = %.loopexit - %22 = getelementptr inbounds nuw i8, ptr %.151, i64 1 +20: ; preds = %.loopexit + %21 = getelementptr inbounds nuw i8, ptr %.151, i64 1 %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 %exitcond63.not = icmp eq i64 %indvars.iv.next61, 3 br i1 %exitcond63.not, label %.split.loop.exit67, label %.preheader, !llvm.loop !14 .split.loop.exit: ; preds = %.loopexit - %23 = trunc nuw nsw i64 %indvars.iv60 to i32 + %22 = trunc nuw nsw i64 %indvars.iv60 to i32 br label %.split.loop.exit67 -.split.loop.exit67: ; preds = %21, %.split.loop.exit - %.042.lcssa = phi i32 [ %23, %.split.loop.exit ], [ 3, %21 ] +.split.loop.exit67: ; preds = %20, %.split.loop.exit + %.042.lcssa = phi i32 [ %22, %.split.loop.exit ], [ 3, %21 ] %.not48 = icmp eq ptr %4, null - br i1 %.not48, label %30, label %24 - -24: ; preds = %.split.loop.exit67 - %25 = load i32, ptr %4, align 4 - %26 = and i32 %25, 14 - %.not49 = icmp eq i32 %26, 0 - %27 = icmp ult i32 %.042.lcssa, 3 - %or.cond74 = select i1 %.not49, i1 %27, i1 false - br i1 %or.cond74, label %switch.lookup, label %30 - -switch.lookup: ; preds = %24 - %28 = zext nneg i32 %.042.lcssa to i64 - %switch.gep = getelementptr inbounds nuw [3 x i32], ptr @switch.table.verify_socket_core_thread_count, i64 0, i64 %28 + br i1 %.not48, label %29, label %23 + +23: ; preds = %.split.loop.exit67 + %24 = load i32, ptr %4, align 4 + %25 = and i32 %24, 14 + %.not49 = icmp eq i32 %25, 0 + %26 = icmp ult i32 %.042.lcssa, 3 + %or.cond74 = select i1 %.not49, i1 %26, i1 false + br i1 %or.cond74, label %switch.lookup, label %29 + +switch.lookup: ; preds = %23 + %27 = zext nneg i32 %.042.lcssa to i64 + %switch.gep = getelementptr inbounds nuw [3 x i32], ptr @switch.table.verify_socket_core_thread_count, i64 0, i64 %27 %switch.load = load i32, ptr %switch.gep, align 4 - %29 = or disjoint i32 %25, %switch.load - store i32 %29, ptr %4, align 4 - br label %30 - -30: ; preds = %switch.lookup, %24, %.split.loop.exit67 - %31 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %9, ptr noundef nonnull @.str.47, ptr noundef %1, ptr noundef nonnull %6, i1 noundef zeroext true) - %32 = load i32, ptr %1, align 4 - %33 = icmp eq i32 %32, 1 - %34 = load i32, ptr %6, align 4 - %35 = icmp eq i32 %34, 2147483647 - %or.cond = select i1 %33, i1 %35, i1 false - br i1 %or.cond, label %36, label %37 - -36: ; preds = %30 + %28 = or disjoint i32 %24, %switch.load + store i32 %28, ptr %4, align 4 + br label %29 + +29: ; preds = %switch.lookup, %23, %.split.loop.exit67 + %30 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %9, ptr noundef nonnull @.str.47, ptr noundef %1, ptr noundef nonnull %6, i1 noundef zeroext true) + %31 = load i32, ptr %1, align 4 + %32 = icmp eq i32 %31, 1 + %33 = load i32, ptr %6, align 4 + %34 = icmp eq i32 %33, 2147483647 + %or.cond = select i1 %32, i1 %34, i1 false + br i1 %or.cond, label %35, label %36 + +35: ; preds = %29 store i32 -2, ptr %1, align 4 - br label %37 + br label %36 -37: ; preds = %36, %30 - %38 = getelementptr inbounds nuw i8, ptr %9, i64 48 - %39 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %38, ptr noundef nonnull @.str.48, ptr noundef %2, ptr noundef nonnull %7, i1 noundef zeroext true) - %40 = load i32, ptr %2, align 4 - %41 = icmp eq i32 %40, 1 - %42 = load i32, ptr %7, align 4 - %43 = icmp eq i32 %42, 2147483647 - %or.cond3 = select i1 %41, i1 %43, i1 false - br i1 %or.cond3, label %44, label %45 - -44: ; preds = %37 +36: ; preds = %35, %29 + %37 = getelementptr inbounds nuw i8, ptr %9, i64 48 + %38 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %37, ptr noundef nonnull @.str.48, ptr noundef %2, ptr noundef nonnull %7, i1 noundef zeroext true) + %39 = load i32, ptr %2, align 4 + %40 = icmp eq i32 %39, 1 + %41 = load i32, ptr %7, align 4 + %42 = icmp eq i32 %41, 2147483647 + %or.cond3 = select i1 %40, i1 %42, i1 false + br i1 %or.cond3, label %43, label %44 + +43: ; preds = %36 store i32 -2, ptr %2, align 4 - br label %45 - -45: ; preds = %44, %37 - %46 = and i1 %31, %39 - %47 = getelementptr inbounds nuw i8, ptr %9, i64 96 - %48 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %47, ptr noundef nonnull @.str.49, ptr noundef %3, ptr noundef nonnull %8, i1 noundef zeroext true) - %49 = load i32, ptr %3, align 4 - %50 = icmp eq i32 %49, 1 - %51 = load i32, ptr %8, align 4 - %52 = icmp eq i32 %51, 2147483647 - %or.cond5 = select i1 %50, i1 %52, i1 false - br i1 %or.cond5, label %53, label %54 - -53: ; preds = %45 + br label %44 + +44: ; preds = %43, %36 + %45 = and i1 %30, %38 + %46 = getelementptr inbounds nuw i8, ptr %9, i64 96 + %47 = call zeroext i1 @get_resource_arg_range(ptr noundef nonnull %46, ptr noundef nonnull @.str.49, ptr noundef %3, ptr noundef nonnull %8, i1 noundef zeroext true) + %48 = load i32, ptr %3, align 4 + %49 = icmp eq i32 %48, 1 + %50 = load i32, ptr %8, align 4 + %51 = icmp eq i32 %50, 2147483647 + %or.cond5 = select i1 %49, i1 %51, i1 false + br i1 %or.cond5, label %52, label %53 + +52: ; preds = %44 store i32 -2, ptr %3, align 4 - br label %54 + br label %53 -54: ; preds = %53, %45 - %55 = and i1 %46, %48 - br label %56 +53: ; preds = %52, %44 + %54 = and i1 %45, %47 + br label %55 -56: ; preds = %54, %10 - %.044 = phi i1 [ %55, %54 ], [ false, %10 ] +55: ; preds = %53, %10 + %.044 = phi i1 [ %54, %54 ], [ false, %10 ] call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #21 diff --git a/bench/spike/optimized/plic.ll b/bench/spike/optimized/plic.ll index a3cce9e58ab..28f4af4c8e7 100644 --- a/bench/spike/optimized/plic.ll +++ b/bench/spike/optimized/plic.ll @@ -1595,7 +1595,7 @@ define noundef zeroext i1 @_ZN6plic_t4loadEmmPh(ptr noundef nonnull align 8 dere 52: ; preds = %29 %53 = icmp ult i64 %1, 2097152 - br i1 %53, label %54, label %78 + br i1 %53, label %54, label %77 54: ; preds = %52 %55 = add nuw nsw i64 %1, 549755805696 @@ -1627,19 +1627,19 @@ define noundef zeroext i1 @_ZN6plic_t4loadEmmPh(ptr noundef nonnull align 8 dere %77 = load i32, ptr %76, align 4, !tbaa !53 br label %_ZN6plic_t13priority_readEmPj.exit -78: ; preds = %52 - %79 = icmp ult i64 %1, 16777216 - br i1 %79, label %80, label %_ZN6plic_t13priority_readEmPj.exit - -80: ; preds = %78 - %81 = add nuw nsw i64 %1, 17592183947264 - %82 = lshr i64 %81, 12 - %83 = and i64 %1, 4095 - %84 = and i64 %82, 4294967295 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %87 = load ptr, ptr %86, align 8, !tbaa !28 - %88 = load ptr, ptr %85, align 8, !tbaa !34 +77: ; preds = %52 + %78 = icmp ult i64 %1, 16777216 + br i1 %78, label %79, label %_ZN6plic_t13priority_readEmPj.exit + +79: ; preds = %77 + %80 = add nuw nsw i64 %1, 17592183947264 + %81 = lshr i64 %80, 12 + %82 = and i64 %1, 4095 + %83 = and i64 %81, 4294967295 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %86 = load ptr, ptr %85, align 8, !tbaa !28 + %87 = load ptr, ptr %84, align 8, !tbaa !34 %89 = ptrtoint ptr %87 to i64 %90 = ptrtoint ptr %88 to i64 %91 = sub i64 %89, %90 @@ -1647,41 +1647,41 @@ define noundef zeroext i1 @_ZN6plic_t4loadEmmPh(ptr noundef nonnull align 8 dere %93 = icmp ult i64 %84, %92 br i1 %93, label %94, label %_ZN6plic_t13priority_readEmPj.exit -94: ; preds = %80 - %95 = getelementptr inbounds nuw %struct.plic_context_t, ptr %88, i64 %84 +94: ; preds = %80 + %95 = getelementptr inbounds nuw %struct.plic_context_t, ptr %88, i64 %83 switch i64 %83, label %_ZN6plic_t13priority_readEmPj.exit [ i64 0, label %96 i64 4, label %100 ] -96: ; preds = %94 - %97 = getelementptr inbounds nuw i8, ptr %95, i64 9 - %98 = load i8, ptr %97, align 1, !tbaa !51 - %99 = zext i8 %98 to i32 +95: ; preds = %94 + %96 = getelementptr inbounds nuw i8, ptr %95, i64 9 + %97 = load i8, ptr %96, align 1, !tbaa !51 + %98 = zext i8 %97 to i32 br label %_ZN6plic_t13priority_readEmPj.exit -100: ; preds = %94 - %101 = tail call noundef i32 @_ZN6plic_t13context_claimEP14plic_context_t(ptr noundef nonnull readonly align 8 dereferenceable(1204) %0, ptr noundef nonnull %95) +99: ; preds = %94 + %100 = tail call noundef i32 @_ZN6plic_t13context_claimEP14plic_context_t(ptr noundef nonnull readonly align 8 dereferenceable(1204) %0, ptr noundef nonnull %95) br label %_ZN6plic_t13priority_readEmPj.exit -_ZN6plic_t13priority_readEmPj.exit: ; preds = %46, %94, %100, %96, %74, %68, %38, %31, %24, %18, %80, %54, %78 - %.048 = phi i32 [ 0, %54 ], [ 0, %80 ], [ 0, %78 ], [ %28, %24 ], [ 0, %18 ], [ 0, %38 ], [ 0, %31 ], [ %77, %74 ], [ 0, %68 ], [ 0, %94 ], [ %101, %100 ], [ %99, %96 ], [ %49, %46 ] +_ZN6plic_t13priority_readEmPj.exit: ; preds = %46, %94, %99, %95, %74, %68, %38, %31, %24, %18, %79, %54, %77 + %.048 = phi i32 [ 0, %54 ], [ 0, %80 ], [ 0, %78 ], [ %28, %24 ], [ 0, %18 ], [ 0, %38 ], [ 0, %31 ], [ %77, %74 ], [ 0, %68 ], [ 0, %94 ], [ %100, %100 ], [ %98, %96 ], [ %49, %46 ] %.040 = phi i1 [ false, %54 ], [ false, %80 ], [ false, %78 ], [ true, %24 ], [ true, %18 ], [ true, %38 ], [ true, %31 ], [ true, %74 ], [ true, %68 ], [ true, %94 ], [ true, %100 ], [ true, %96 ], [ true, %46 ] - %.039 = phi i64 [ %57, %54 ], [ %83, %80 ], [ %1, %78 ], [ %1, %24 ], [ %1, %18 ], [ %1, %38 ], [ %1, %31 ], [ %57, %74 ], [ %57, %68 ], [ %83, %94 ], [ 4, %100 ], [ 0, %96 ], [ %1, %46 ] + %.039 = phi i64 [ %57, %54 ], [ %82, %80 ], [ %1, %78 ], [ %1, %24 ], [ %1, %18 ], [ %1, %38 ], [ %1, %31 ], [ %57, %74 ], [ %57, %68 ], [ %82, %94 ], [ 4, %100 ], [ 0, %96 ], [ %1, %46 ] br label %.lr.ph.i47 .lr.ph.i47: ; preds = %.lr.ph.i47, %_ZN6plic_t13priority_readEmPj.exit - %.08.i = phi i64 [ %108, %.lr.ph.i47 ], [ 0, %_ZN6plic_t13priority_readEmPj.exit ] - %102 = add i64 %.08.i, %.039 - %.tr.i = trunc i64 %102 to i32 - %103 = shl i32 %.tr.i, 3 - %104 = and i32 %103, 24 - %105 = lshr i32 %.048, %104 - %106 = trunc i32 %105 to i8 - %107 = getelementptr inbounds nuw i8, ptr %3, i64 %.08.i - store i8 %106, ptr %107, align 1, !tbaa !32 - %108 = add nuw nsw i64 %.08.i, 1 - %exitcond.not.i = icmp eq i64 %108, 4 + %.08.i = phi i64 [ %107, %.lr.ph.i47 ], [ 0, %_ZN6plic_t13priority_readEmPj.exit ] + %101 = add i64 %.08.i, %.039 + %.tr.i = trunc i64 %101 to i32 + %102 = shl i32 %.tr.i, 3 + %103 = and i32 %102, 24 + %104 = lshr i32 %.048, %103 + %105 = trunc i32 %104 to i8 + %106 = getelementptr inbounds nuw i8, ptr %3, i64 %.08.i + store i8 %105, ptr %106, align 1, !tbaa !32 + %107 = add nuw nsw i64 %.08.i, 1 + %exitcond.not.i = icmp eq i64 %107, 4 br i1 %exitcond.not.i, label %_Z22read_little_endian_regIjEvT_mmPh.exit, label %.lr.ph.i47, !llvm.loop !66 _Z22read_little_endian_regIjEvT_mmPh.exit: ; preds = %.lr.ph.i47, %4, %6, %10 diff --git a/bench/stb/optimized/stb_ds.ll b/bench/stb/optimized/stb_ds.ll index a5e4b08fdbf..1b07555f827 100644 --- a/bench/stb/optimized/stb_ds.ll +++ b/bench/stb/optimized/stb_ds.ll @@ -966,7 +966,7 @@ define ptr @stbds_hmget_key_ts(ptr noundef readonly captures(address_is_null, re tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %11, i8 0, i64 %1, i1 false) store i64 -1, ptr %4, align 8, !tbaa !10 %14 = getelementptr inbounds nuw i8, ptr %11, i64 %1 - br label %33 + br label %32 15: ; preds = %6 %16 = sub i64 0, %1 @@ -974,12 +974,12 @@ define ptr @stbds_hmget_key_ts(ptr noundef readonly captures(address_is_null, re %18 = getelementptr inbounds i8, ptr %17, i64 -16 %19 = load ptr, ptr %18, align 8, !tbaa !37 %20 = icmp eq ptr %19, null - br i1 %20, label %32, label %21 + br i1 %20, label %31, label %21 21: ; preds = %15 %22 = tail call i64 @stbds_hm_find_slot(ptr noundef nonnull %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, i64 noundef 0, i32 noundef %5) %23 = icmp slt i64 %22, 0 - br i1 %23, label %32, label %24 + br i1 %23, label %31, label %24 24: ; preds = %21 %25 = getelementptr inbounds nuw i8, ptr %19, i64 96 @@ -991,13 +991,13 @@ define ptr @stbds_hmget_key_ts(ptr noundef readonly captures(address_is_null, re %31 = load i64, ptr %30, align 8, !tbaa !10 br label %32 -32: ; preds = %24, %21, %15 - %storemerge30 = phi i64 [ -1, %15 ], [ %31, %24 ], [ -1, %21 ] +31: ; preds = %24, %21, %15 + %storemerge30 = phi i64 [ -1, %15 ], [ %30, %24 ], [ -1, %21 ] store i64 %storemerge30, ptr %4, align 8, !tbaa !10 - br label %33 + br label %32 -33: ; preds = %32, %8 - %.0 = phi ptr [ %14, %8 ], [ %0, %32 ] +32: ; preds = %31, %8 + %.0 = phi ptr [ %14, %8 ], [ %0, %31 ] ret ptr %.0 } @@ -1048,9 +1048,9 @@ stbds_hmget_key_ts.exit: ; preds = %14, %20, %23, %7 %.pre-phi = phi i64 [ %15, %14 ], [ %15, %20 ], [ %15, %23 ], [ %.pre, %7 ] %.0 = phi i64 [ -1, %14 ], [ -1, %20 ], [ %30, %23 ], [ -1, %7 ] %.0.i = phi ptr [ %0, %14 ], [ %0, %20 ], [ %0, %23 ], [ %13, %7 ] - %31 = getelementptr inbounds i8, ptr %.0.i, i64 %.pre-phi - %32 = getelementptr inbounds i8, ptr %31, i64 -8 - store i64 %.0, ptr %32, align 8, !tbaa !46 + %30 = getelementptr inbounds i8, ptr %.0.i, i64 %.pre-phi + %31 = getelementptr inbounds i8, ptr %30, i64 -8 + store i64 %.0, ptr %31, align 8, !tbaa !46 ret ptr %.0.i } @@ -1872,7 +1872,7 @@ stbds_log2.exit.i: ; Function Attrs: nounwind uwtable define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_null, ret: address, provenance) %0, i64 noundef %1, ptr noundef readonly captures(none) %2, i64 noundef %3, i64 noundef %4, i32 noundef %5) local_unnamed_addr #13 { %7 = icmp eq ptr %0, null - br i1 %7, label %89, label %8 + br i1 %7, label %88, label %8 8: ; preds = %6 %9 = sub i64 0, %1 @@ -1883,12 +1883,12 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul %14 = getelementptr inbounds i8, ptr %10, i64 -8 store i64 0, ptr %14, align 8, !tbaa !46 %15 = icmp eq ptr %13, null - br i1 %15, label %89, label %16 + br i1 %15, label %88, label %16 16: ; preds = %8 %17 = tail call i64 @stbds_hm_find_slot(ptr noundef nonnull %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, i64 noundef %4, i32 noundef %5) %18 = icmp slt i64 %17, 0 - br i1 %18, label %89, label %19 + br i1 %18, label %88, label %19 19: ; preds = %16 %20 = getelementptr inbounds nuw i8, ptr %13, i64 96 @@ -1968,7 +1968,7 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul store i64 %27, ptr %66, align 8, !tbaa !10 br label %67 -67: ; preds = %.thread, %61, %46 +67:; preds = %.thread, %61, %46 %68 = load i64, ptr %11, align 8, !tbaa !3 %69 = add i64 %68, -1 store i64 %69, ptr %11, align 8, !tbaa !3 @@ -1978,36 +1978,36 @@ define noundef ptr @stbds_hmdel_key(ptr noundef returned captures(address_is_nul %73 = icmp ult i64 %70, %72 br i1 %73, label %74, label %80 -74: ; preds = %67 +74: ; preds = %67 %75 = getelementptr inbounds nuw i8, ptr %13, i64 8 %76 = load i64, ptr %75, align 8, !tbaa !18 %77 = icmp ugt i64 %76, 8 br i1 %77, label %78, label %80 -78: ; preds = %74 +78:; preds = %74 %79 = lshr i64 %76, 1 br label %.sink.split -80: ; preds = %74, %67 - %81 = load i64, ptr %33, align 8, !tbaa !20 - %82 = getelementptr inbounds nuw i8, ptr %13, i64 48 - %83 = load i64, ptr %82, align 8, !tbaa !23 - %84 = icmp ugt i64 %81, %83 - br i1 %84, label %85, label %89 +79: ; preds = %74, %67 + %80 = load i64, ptr %33, align 8, !tbaa !20 + %81 = getelementptr inbounds nuw i8, ptr %13, i64 48 + %82 = load i64, ptr %81, align 8, !tbaa !23 + %83 = icmp ugt i64 %80, %82 + br i1 %83, label %84, label %88 -85: ; preds = %80 - %86 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %87 = load i64, ptr %86, align 8, !tbaa !18 +84: ; preds = %79 + %85 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %86 = load i64, ptr %85, align 8, !tbaa !18 br label %.sink.split -.sink.split: ; preds = %85, %78 - %.sink93 = phi i64 [ %79, %78 ], [ %87, %85 ] - %88 = tail call ptr @stbds_make_hash_index(i64 noundef %.sink93, ptr noundef nonnull %13) - store ptr %88, ptr %12, align 8, !tbaa !37 +.sink.split: ; preds = %84, %78 + %.sink93 = phi i64 [ %79, %78 ], [ %86, %85 ] + %87 = tail call ptr @stbds_make_hash_index(i64 noundef %.sink93, ptr noundef nonnull %13) + store ptr %87, ptr %12, align 8, !tbaa !37 tail call void @free(ptr noundef nonnull %13) #21 - br label %89 + br label %88 -89: ; preds = %.sink.split, %8, %80, %16, %6 +88: ; preds = %.sink.split, %8, %79, %16, %6 ret ptr %0 } diff --git a/bench/stb/optimized/stb_image_resize2.ll b/bench/stb/optimized/stb_image_resize2.ll index e3a1584b2dc..f78a178f355 100644 --- a/bench/stb/optimized/stb_image_resize2.ll +++ b/bench/stb/optimized/stb_image_resize2.ll @@ -30172,17 +30172,17 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %22 = icmp eq i32 %21, 6 %23 = add i32 %4, -1 %or.cond = icmp ult i32 %23, 2 - %or.cond111 = select i1 %22, i1 %or.cond, i1 false + %or.cond110 = select i1 %22, i1 %or.cond, i1 false %24 = add i32 %6, -1 %or.cond3 = icmp ult i32 %24, 2 - %or.cond112 = select i1 %or.cond111, i1 %or.cond3, i1 false - %spec.select = select i1 %or.cond112, i32 0, i32 %4 - %spec.select115 = select i1 %or.cond112, i32 0, i32 %6 + %or.cond111 = select i1 %or.cond110, i1 %or.cond3, i1 false + %spec.select = select i1 %or.cond111, i32 0, i32 %4 + %spec.select114 = select i1 %or.cond111, i32 0, i32 %6 br label %25 25: ; preds = %19, %2 %.097 = phi i32 [ %4, %2 ], [ %spec.select, %19 ] - %.096 = phi i32 [ %6, %2 ], [ %spec.select115, %19 ] + %.096 = phi i32 [ %6, %2 ], [ %spec.select114, %19 ] %26 = icmp eq i32 %11, 0 br i1 %26, label %27, label %38 @@ -30207,7 +30207,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ br i1 %39, label %42, label %._crit_edge ._crit_edge: ; preds = %38 - %.pre118 = zext i32 %.096 to i64 + %.pre117 = zext i32 %.096 to i64 br label %51 42: ; preds = %38 @@ -30223,7 +30223,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ br label %51 51: ; preds = %._crit_edge, %42 - %.pre-phi = phi i64 [ %.pre118, %._crit_edge ], [ %46, %42 ] + %.pre-phi = phi i64 [ %.pre117, %._crit_edge ], [ %46, %42 ] %52 = getelementptr inbounds nuw i8, ptr %1, i64 64 %53 = load ptr, ptr %52, align 8, !tbaa !984 %54 = getelementptr inbounds nuw i8, ptr %0, i64 488 @@ -30278,12 +30278,12 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %or.cond7 = select i1 %78, i1 %87, i1 false %88 = icmp eq i32 %.096, 3 %or.cond9 = select i1 %79, i1 %88, i1 false - %or.cond113 = select i1 %or.cond7, i1 true, i1 %or.cond9 - %spec.select116 = zext i1 %or.cond113 to i64 + %or.cond112 = select i1 %or.cond7, i1 true, i1 %or.cond9 + %spec.select115 = zext i1 %or.cond112 to i64 br label %89 89: ; preds = %86, %83, %80 - %.095 = phi i64 [ 0, %80 ], [ 0, %83 ], [ %spec.select116, %86 ] + %.095 = phi i64 [ 0, %80 ], [ 0, %83 ], [ %spec.select115, %86 ] %90 = getelementptr inbounds nuw i8, ptr %0, i64 472 %91 = load i32, ptr %90, align 8, !tbaa !966 %92 = icmp ult i32 %91, 5 @@ -30296,29 +30296,29 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %97 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.decode_alphas_scaled_or_not, i64 0, i64 %96 br label %98 -98: ; preds = %89, %93 +96: ; preds = %89, %93 %.sink = phi ptr [ %97, %93 ], [ @__const.stbir__update_info_from_resize.decode_simple_scaled_or_not, %89 ] %99 = zext i1 %79 to i64 %100 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr %.sink, i64 0, i64 %99 %.099.in = getelementptr inbounds nuw [2 x ptr], ptr %100, i64 0, i64 %.095 br label %117 -101: ; preds = %51 - %102 = getelementptr inbounds nuw i8, ptr %0, i64 472 - %103 = load i32, ptr %102, align 8, !tbaa !966 - %104 = icmp ult i32 %103, 5 - br i1 %104, label %105, label %109 +102: ; preds = %51 + %103 = getelementptr inbounds nuw i8, ptr %0, i64 472 + %104 = load i32, ptr %103, align 8, !tbaa !966 + %105 = icmp ult i32 %104, 5 + br i1 %105, label %106, label %110 -105: ; preds = %101 - %106 = add i32 %.097, -1 - %107 = zext i32 %106 to i64 - %108 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.decode_simple, i64 0, i64 %107 +106: ; preds = %102 + %107 = add i32 %.097, -1 + %108 = zext i32 %107 to i64 + %109 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.decode_simple, i64 0, i64 %108 br label %117 -109: ; preds = %101 - %110 = add i32 %103, -5 - %111 = urem i32 %110, 6 - %112 = zext nneg i32 %111 to i64 +110: ; preds = %102 + %111 = add i32 %104, -5 + %112 = urem i32 %111, 6 + %113 = zext nneg i32 %112 to i64 %113 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.decode_alphas, i64 0, i64 %112 %114 = add i32 %.097, -1 %115 = zext i32 %114 to i64 @@ -30326,7 +30326,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ br label %117 117: ; preds = %105, %109, %98 - %.1100.in = phi ptr [ %.099.in, %98 ], [ %108, %105 ], [ %116, %109 ] + %.1100.in = phi ptr [ %.099.in, %98 ], [ %109, %105 ], [ %116, %109 ] %.1100 = load ptr, ptr %.1100.in, align 8, !tbaa !42 %118 = icmp eq i32 %.096, 3 switch i32 %.096, label %139 [ @@ -30350,12 +30350,12 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %126 = or i32 %.096, %.097 %or.cond13 = icmp eq i32 %126, 0 %or.cond15 = and i1 %79, %118 - %or.cond114 = or i1 %or.cond13, %or.cond15 - %spec.select117 = zext i1 %or.cond114 to i64 + %or.cond113 = or i1 %or.cond13, %or.cond15 + %spec.select116 = zext i1 %or.cond113 to i64 br label %127 127: ; preds = %125, %122, %119 - %.0 = phi i64 [ 0, %119 ], [ 0, %122 ], [ %spec.select117, %125 ] + %.0 = phi i64 [ 0, %119 ], [ 0, %122 ], [ %spec.select116, %125 ] %128 = getelementptr inbounds nuw i8, ptr %0, i64 476 %129 = load i32, ptr %128, align 4, !tbaa !967 %130 = icmp ult i32 %129, 5 @@ -30368,29 +30368,29 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ %135 = getelementptr inbounds nuw [6 x [2 x [2 x ptr]]], ptr @__const.stbir__update_info_from_resize.encode_alphas_scaled_or_not, i64 0, i64 %134 br label %136 -136: ; preds = %127, %131 +134: ; preds = %127, %131 %.sink120 = phi ptr [ %135, %131 ], [ @__const.stbir__update_info_from_resize.encode_simple_scaled_or_not, %127 ] %137 = zext i1 %118 to i64 %138 = getelementptr inbounds nuw [2 x [2 x ptr]], ptr %.sink120, i64 0, i64 %137 %.098.in = getelementptr inbounds nuw [2 x ptr], ptr %138, i64 0, i64 %.0 br label %155 -139: ; preds = %117 - %140 = getelementptr inbounds nuw i8, ptr %0, i64 476 - %141 = load i32, ptr %140, align 4, !tbaa !967 - %142 = icmp ult i32 %141, 5 - br i1 %142, label %143, label %147 +140: ; preds = %117 + %141 = getelementptr inbounds nuw i8, ptr %0, i64 476 + %142 = load i32, ptr %141, align 4, !tbaa !967 + %143 = icmp ult i32 %142, 5 + br i1 %143, label %144, label %148 -143: ; preds = %139 - %144 = add i32 %.096, -1 - %145 = zext i32 %144 to i64 - %146 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.encode_simple, i64 0, i64 %145 +144: ; preds = %140 + %145 = add i32 %.096, -1 + %146 = zext i32 %145 to i64 + %147 = getelementptr inbounds nuw [5 x ptr], ptr @__const.stbir__update_info_from_resize.encode_simple, i64 0, i64 %146 br label %155 -147: ; preds = %139 - %148 = add i32 %141, -5 - %149 = urem i32 %148, 6 - %150 = zext nneg i32 %149 to i64 +148: ; preds = %140 + %149 = add i32 %142, -5 + %150 = urem i32 %149, 6 + %151 = zext nneg i32 %150 to i64 %151 = getelementptr inbounds nuw [6 x [5 x ptr]], ptr @__const.stbir__update_info_from_resize.encode_alphas, i64 0, i64 %150 %152 = add i32 %.096, -1 %153 = zext i32 %152 to i64 @@ -30398,7 +30398,7 @@ define void @stbir__update_info_from_resize(ptr noundef captures(none) initializ br label %155 155: ; preds = %143, %147, %136 - %.1.in = phi ptr [ %.098.in, %136 ], [ %146, %143 ], [ %154, %147 ] + %.1.in = phi ptr [ %.098.in, %136 ], [ %147, %143 ], [ %154, %147 ] %.1 = load ptr, ptr %.1.in, align 8, !tbaa !42 %156 = getelementptr inbounds nuw i8, ptr %0, i64 336 store i32 %.097, ptr %156, align 8, !tbaa !449 diff --git a/bench/tev/optimized/UberShader.ll b/bench/tev/optimized/UberShader.ll index 78c3160766e..d053d08d5a0 100644 --- a/bench/tev/optimized/UberShader.ll +++ b/bench/tev/optimized/UberShader.ll @@ -1587,22 +1587,22 @@ define dso_local void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_(ptr _ZN7nanogui6MatrixIfLm3EEC2Ef.exit: ; preds = %7 store i8 0, ptr %6, align 4 - %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store i8 0, ptr %11, align 4 + %10 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store i8 0, ptr %10, align 4 call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %4) call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %4, i8 0, i64 36, i1 false) - br label %12 + br label %11 -12: ; preds = %12, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit +11: ; preds = %11, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit %.05.i.i = phi i64 [ 0, %_ZN7nanogui6MatrixIfLm3EEC2Ef.exit ], [ %15, %12 ] - %13 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %.05.i.i - %14 = getelementptr inbounds nuw [3 x float], ptr %13, i64 0, i64 %.05.i.i + %12 = getelementptr inbounds nuw [3 x [3 x float]], ptr %4, i64 0, i64 %.05.i.i + %14 = getelementptr inbounds nuw [3 x float], ptr %12, i64 0, i64 %.05.i.i store float 0.000000e+00, ptr %14, align 4 %15 = add nuw nsw i64 %.05.i.i, 1 %exitcond.not.i.i = icmp eq i64 %15, 3 br i1 %exitcond.not.i.i, label %_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit, label %12, !llvm.loop !27 -_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit: ; preds = %12 +_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEEfffbNS_8ETonemapERKNSt3__18optionalINS_3BoxIiLj2EEEEE.exit: ; preds = %11 call void @_ZN3tev10UberShader4drawERKN7nanogui5ArrayIfLm2EEES5_PNS1_7TextureERKNS1_6MatrixIfLm3EEES7_SB_fffbNS_8ETonemapENS_7EMetricERKNSt3__18optionalINS_3BoxIiLj2EEEEE(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 4 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef null, ptr noundef nonnull readonly align 4 dereferenceable(36) %5, ptr noundef null, ptr noundef nonnull align 4 dereferenceable(36) %4, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i1 noundef zeroext false, i32 noundef 0, i32 noundef 0, ptr noundef nonnull readonly align 4 dereferenceable(17) %6) call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %4) ret void diff --git a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll index 786270b4281..1c46a198ded 100644 --- a/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll +++ b/bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll @@ -755,66 +755,66 @@ define void @_RNvMNtCs8mTrBI1stz4_15turborepo_vt1006parserNtB2_6Parser7process(p %38 = load i8, ptr %37, align 1, !noalias !78, !noundef !4 br label %39 -39: ; preds = %35, %30 +39: ; preds = %35, %30 %.sroa.01.0.i = phi i8 [ %38, %35 ], [ %33, %30 ] %40 = and i8 %.sroa.01.0.i, 15 %41 = lshr i8 %.sroa.01.0.i, 4 %42 = icmp eq i8 %40, 0 br i1 %42, label %43, label %44 -43: ; preds = %39 +43:; preds = %39 call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %41, i8 noundef %21) br label %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit -44: ; preds = %39 +43: ; preds = %39 %cond.i.i = icmp eq i8 %22, 13 - br i1 %cond.i.i, label %47, label %45 + br i1 %cond.i.i, label %46, label %44 -45: ; preds = %47, %44 - %46 = icmp ult i8 %.sroa.01.0.i, 16 - br i1 %46, label %48, label %49 +44: ; preds = %46, %43 + %45 = icmp ult i8 %.sroa.01.0.i, 16 + br i1 %45, label %47, label %48 -47: ; preds = %44 +46: ; preds = %43 call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef 8, i8 noundef %21) - br label %45 + br label %44 -48: ; preds = %49, %45 +47: ; preds = %48, %44 switch i8 %40, label %50 [ - i8 1, label %51 - i8 5, label %51 - i8 9, label %52 - i8 10, label %51 - i8 13, label %53 + i8 1, label %50 + i8 5, label %50 + i8 9, label %51 + i8 10, label %50 + i8 13, label %52 ] -49: ; preds = %45 +48: ; preds = %44 call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef range(i8 0, 16) %41, i8 noundef %21) - br label %48 + br label %47 -50: ; preds = %53, %52, %51, %48 +49: ; preds = %52, %51, %50, %47 store i8 %40, ptr %8, align 8, !alias.scope !86, !noalias !89 br label %_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit -51: ; preds = %48, %48, %48 +50: ; preds = %47, %47, %47 store i64 0, ptr %11, align 8, !alias.scope !91, !noalias !94 store i8 0, ptr %12, align 1, !alias.scope !91, !noalias !94 store i16 0, ptr %13, align 2, !alias.scope !91, !noalias !94 store i8 0, ptr %14, align 8, !alias.scope !91, !noalias !94 store i64 0, ptr %15, align 8, !alias.scope !91, !noalias !94 - br label %50 + br label %49 -52: ; preds = %48 +51: ; preds = %47 call fastcc void @_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser14perform_actionNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBT_(ptr noalias noundef nonnull align 8 dereferenceable(1432) %7, ptr noalias noundef nonnull align 8 dereferenceable(344) %0, i8 noundef 6, i8 noundef %21) - br label %50 + br label %49 -53: ; preds = %48 +52: ; preds = %47 call void @_RNvYINtNtCslmLCWD9els8_8arrayvec8arrayvec8ArrayVechKj400_ENtNtB7_13arrayvec_impl12ArrayVecImpl8truncateCscmPyG4XWoQZ_3vte(ptr noalias noundef nonnull align 4 dereferenceable(1028) %9, i64 noundef 0), !noalias !96 store i64 0, ptr %10, align 8, !alias.scope !99, !noalias !101 - br label %50 + br label %49 -_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit: ; preds = %25, %43, %50 - %54 = icmp eq ptr %20, %5 - br i1 %54, label %._crit_edge, label %19 +_RINvMs_CscmPyG4XWoQZ_3vteNtB5_6Parser7advanceNtNtCs8mTrBI1stz4_15turborepo_vt1007perform13WrappedScreenEBL_.exit: ; preds = %25, %43, %49 + %53 = icmp eq ptr %20, %5 + br i1 %53, label %._crit_edge, label %19 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/verilator/optimized/V3PreProc.ll b/bench/verilator/optimized/V3PreProc.ll index b87353738af..5f860d8aab0 100644 --- a/bench/verilator/optimized/V3PreProc.ll +++ b/bench/verilator/optimized/V3PreProc.ll @@ -73940,7 +73940,7 @@ define linkonce_odr dso_local void @_ZN9V3PreExpr5parseEv(ptr noundef nonnull al %28 = getelementptr inbounds nuw i8, ptr %0, i64 80 br label %32 -.critedge: ; preds = %154, %151, %145, %146, %82, %79 +.critedge: ; preds = %153, %150, %144, %145, %82, %79 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #45 %29 = load ptr, ptr %6, align 8, !tbaa !1349 %30 = load ptr, ptr %7, align 8, !tbaa !1349 @@ -74046,7 +74046,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i13 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #45 - br label %176 + br label %175 73: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE9pop_frontEv.exit %74 = load i8, ptr %15, align 8, !tbaa !1209 @@ -74109,154 +74109,154 @@ _ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit: ; preds = %91, %94 %106 = icmp sgt i32 %105, 8 br i1 %106, label %107, label %145, !prof !797 -107: ; preds = %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit +107:; preds = %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.62, i64 noundef 2) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #45 call void @_ZN7V3Error7lineStrB5cxx11EPKci(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull @.str.263, i32 noundef 254) - %109 = load ptr, ptr %4, align 8, !tbaa !114 - %110 = load i64, ptr %23, align 8, !tbaa !115 - %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef %109, i64 noundef %110) - to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 unwind label %137 + %108 = load ptr, ptr %4, align 8, !tbaa !114 + %109 = load i64, ptr %23, align 8, !tbaa !115 + %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef %108, i64 noundef %109) + to label %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 unwind label %136 _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16: ; preds = %107 - %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull @.str.489, i64 noundef 11) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 unwind label %137 + %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull @.str.489, i64 noundef 11) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 unwind label %136 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17: ; preds = %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16 - %113 = zext i8 %104 to i64 - %114 = getelementptr inbounds nuw [5 x ptr], ptr @_ZZN9V3PreExpr11actionAsciiENS_8action_tEE5names, i64 0, i64 %113 - %115 = load ptr, ptr %114, align 8, !tbaa !4 - %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef %115) - to label %117 unwind label %137 - -117: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 - %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull @.str.490, i64 noundef 17) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 unwind label %137 - -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %117 - %119 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %100 - %120 = load ptr, ptr %119, align 8, !tbaa !4 - %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef %120) - to label %122 unwind label %137 - -122: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 - %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull @.str.491, i64 noundef 2) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 unwind label %137 - -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %122 - %124 = load i8, ptr %15, align 8, !tbaa !1209 - %125 = zext i8 %124 to i64 - %126 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %125 - %127 = load ptr, ptr %126, align 8, !tbaa !4 - %128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef %127) - to label %129 unwind label %137 - -129: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 - %130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull @.str.492, i64 noundef 2) - to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 unwind label %137 - -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20: ; preds = %129 - %131 = load ptr, ptr %4, align 8, !tbaa !114 - %132 = icmp eq ptr %131, %24 - br i1 %132, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 + %112 = zext i8 %104 to i64 + %113 = getelementptr inbounds nuw [5 x ptr], ptr @_ZZN9V3PreExpr11actionAsciiENS_8action_tEE5names, i64 0, i64 %112 + %114 = load ptr, ptr %113, align 8, !tbaa !4 + %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef %114) + to label %117 unwind label %136 + +116: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 + %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull @.str.490, i64 noundef 17) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 unwind label %136 + +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %116 + %118 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %100 + %119 = load ptr, ptr %118, align 8, !tbaa !4 + %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef %119) + to label %122 unwind label %136 + +121: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 + %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull @.str.491, i64 noundef 2) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 unwind label %136 + +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %121 + %123 = load i8, ptr %15, align 8, !tbaa !1209 + %124 = zext i8 %123 to i64 + %125 = getelementptr inbounds nuw [10 x ptr], ptr @_ZZNK14V3PreExprToken5asciiEvE5names, i64 0, i64 %124 + %126 = load ptr, ptr %125, align 8, !tbaa !4 + %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef %126) + to label %129 unwind label %136 + +128: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 + %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull @.str.492, i64 noundef 2) + to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 unwind label %136 + +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20: ; preds = %128 + %130 = load ptr, ptr %4, align 8, !tbaa !114 + %131 = icmp eq ptr %130, %24 + br i1 %131, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 - %133 = load i64, ptr %23, align 8, !tbaa !115 - %134 = icmp ult i64 %133, 16 - call void @llvm.assume(i1 %134) + %132 = load i64, ptr %23, align 8, !tbaa !115 + %133 = icmp ult i64 %132, 16 + call void @llvm.assume(i1 %133) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit20 - %135 = load i64, ptr %24, align 8, !tbaa !27 - %136 = add i64 %135, 1 - call void @_ZdlPvm(ptr noundef %131, i64 noundef %136) #46 + %134 = load i64, ptr %24, align 8, !tbaa !27 + %135 = add i64 %134, 1 + call void @_ZdlPvm(ptr noundef %130, i64 noundef %135) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #45 - br label %145 + br label %144 -137: ; preds = %129, %122, %117, %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16, %107, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 - %138 = landingpad { ptr, i32 } +136: ; preds = %128, %121, %116, %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit16, %107, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 + %137 = landingpad { ptr, i32 } cleanup - %139 = load ptr, ptr %4, align 8, !tbaa !114 - %140 = icmp eq ptr %139, %24 - br i1 %140, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24 + %138 = load ptr, ptr %4, align 8, !tbaa !114 + %139 = icmp eq ptr %138, %24 + br i1 %139, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25: ; preds = %137 - %141 = load i64, ptr %23, align 8, !tbaa !115 - %142 = icmp ult i64 %141, 16 - call void @llvm.assume(i1 %142) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25: ; preds = %136 + %140 = load i64, ptr %23, align 8, !tbaa !115 + %141 = icmp ult i64 %140, 16 + call void @llvm.assume(i1 %141) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24: ; preds = %137 - %143 = load i64, ptr %24, align 8, !tbaa !27 - %144 = add i64 %143, 1 - call void @_ZdlPvm(ptr noundef %139, i64 noundef %144) #46 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24: ; preds = %136 + %142 = load i64, ptr %24, align 8, !tbaa !27 + %143 = add i64 %142, 1 + call void @_ZdlPvm(ptr noundef %138, i64 noundef %143) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i24 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #45 - br label %176 + br label %175 -145: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23, %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit +144: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23, %_ZNSt5dequeI14V3PreExprTokenSaIS0_EE4backEv.exit switch i8 %104, label %._crit_edge.i.i [ - i8 2, label %146 - i8 3, label %147 + i8 2, label %145 + i8 3, label %146 i8 1, label %.critedge ] -146: ; preds = %145 +145: ; preds = %144 call void @_ZN9V3PreExpr6reduceEv(ptr noundef nonnull align 8 dereferenceable(352) %0) br label %.critedge -147: ; preds = %145 - %148 = load ptr, ptr %18, align 8, !tbaa !1368 - %149 = load ptr, ptr %25, align 8, !tbaa !1369 - %150 = getelementptr inbounds i8, ptr %149, i64 -16 - %.not.i27 = icmp eq ptr %148, %150 - br i1 %.not.i27, label %154, label %151 - -151: ; preds = %147 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 8 dereferenceable(16) %2, i64 16, i1 false), !tbaa.struct !1366 - %152 = load ptr, ptr %18, align 8, !tbaa !1368 - %153 = getelementptr inbounds nuw i8, ptr %152, i64 16 - store ptr %153, ptr %18, align 8, !tbaa !1368 +146: ; preds = %144 + %147 = load ptr, ptr %18, align 8, !tbaa !1368 + %148 = load ptr, ptr %25, align 8, !tbaa !1369 + %149 = getelementptr inbounds i8, ptr %148, i64 -16 + %.not.i27 = icmp eq ptr %147, %149 + br i1 %.not.i27, label %153, label %150 + +150: ; preds = %146 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef nonnull align 8 dereferenceable(16) %2, i64 16, i1 false), !tbaa.struct !1366 + %151 = load ptr, ptr %18, align 8, !tbaa !1368 + %152 = getelementptr inbounds nuw i8, ptr %151, i64 16 + store ptr %152, ptr %18, align 8, !tbaa !1368 br label %.critedge -154: ; preds = %147 +153: ; preds = %146 call void @_ZNSt5dequeI14V3PreExprTokenSaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef nonnull align 8 dereferenceable(16) %2) br label %.critedge -._crit_edge.i.i: ; preds = %145 - %155 = load ptr, ptr %2, align 8, !tbaa !1206 - %156 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error11v3errorPrepB5cxx11E11V3ErrorCode(i8 5) - %157 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull @.str.493, i64 noundef 36) +._crit_edge.i.i: ; preds = %144 + %154 = load ptr, ptr %2, align 8, !tbaa !1206 + %155 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error11v3errorPrepB5cxx11E11V3ErrorCode(i8 5) + %156 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull @.str.493, i64 noundef 36) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #45 - %159 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store ptr %159, ptr %5, align 8, !tbaa !244 - %160 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 0, ptr %160, align 8, !tbaa !115 - store i8 0, ptr %159, align 8, !tbaa !27 - invoke void @_ZN8FileLine10v3errorEndERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEERKNS0_12basic_stringIcS3_S4_EE(ptr noundef nonnull align 8 dereferenceable(40) %155, ptr noundef nonnull align 8 dereferenceable(112) %157, ptr noundef nonnull align 8 dereferenceable(32) %5) - to label %161 unwind label %168 - -161: ; preds = %._crit_edge.i.i - %162 = load ptr, ptr %5, align 8, !tbaa !114 - %163 = icmp eq ptr %162, %159 - br i1 %163, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29: ; preds = %161 - %164 = load i64, ptr %160, align 8, !tbaa !115 - %165 = icmp ult i64 %164, 16 - call void @llvm.assume(i1 %165) + %158 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr %158, ptr %5, align 8, !tbaa !244 + %159 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 0, ptr %159, align 8, !tbaa !115 + store i8 0, ptr %158, align 8, !tbaa !27 + invoke void @_ZN8FileLine10v3errorEndERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEERKNS0_12basic_stringIcS3_S4_EE(ptr noundef nonnull align 8 dereferenceable(40) %154, ptr noundef nonnull align 8 dereferenceable(112) %156, ptr noundef nonnull align 8 dereferenceable(32) %5) + to label %161 unwind label %167 + +160: ; preds = %._crit_edge.i.i + %161 = load ptr, ptr %5, align 8, !tbaa !114 + %162 = icmp eq ptr %161, %158 + br i1 %162, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29: ; preds = %160 + %163 = load i64, ptr %159, align 8, !tbaa !115 + %164 = icmp ult i64 %163, 16 + call void @llvm.assume(i1 %164) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28: ; preds = %161 - %166 = load i64, ptr %159, align 8, !tbaa !27 - %167 = add i64 %166, 1 - call void @_ZdlPvm(ptr noundef %162, i64 noundef %167) #46 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28: ; preds = %160 + %165 = load i64, ptr %158, align 8, !tbaa !27 + %166 = add i64 %165, 1 + call void @_ZdlPvm(ptr noundef %161, i64 noundef %166) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i28 @@ -74264,31 +74264,31 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit30: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #45 br label %.loopexit -168: ; preds = %._crit_edge.i.i - %169 = landingpad { ptr, i32 } +167: ; preds = %._crit_edge.i.i + %168 = landingpad { ptr, i32 } cleanup - %170 = load ptr, ptr %5, align 8, !tbaa !114 - %171 = icmp eq ptr %170, %159 - br i1 %171, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31 + %169 = load ptr, ptr %5, align 8, !tbaa !114 + %170 = icmp eq ptr %169, %158 + br i1 %170, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32: ; preds = %168 - %172 = load i64, ptr %160, align 8, !tbaa !115 - %173 = icmp ult i64 %172, 16 - call void @llvm.assume(i1 %173) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32: ; preds = %167 + %171 = load i64, ptr %159, align 8, !tbaa !115 + %172 = icmp ult i64 %171, 16 + call void @llvm.assume(i1 %172) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31: ; preds = %168 - %174 = load i64, ptr %159, align 8, !tbaa !27 - %175 = add i64 %174, 1 - call void @_ZdlPvm(ptr noundef %170, i64 noundef %175) #46 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31: ; preds = %167 + %173 = load i64, ptr %158, align 8, !tbaa !27 + %174 = add i64 %173, 1 + call void @_ZdlPvm(ptr noundef %169, i64 noundef %174) #46 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i31, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i32 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #45 - br label %176 + br label %175 -176: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 - %.pn.pn.pn = phi { ptr, i32 } [ %66, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 ], [ %169, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 ], [ %138, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 ] +175: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 + %.pn.pn.pn = phi { ptr, i32 } [ %66, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit15 ], [ %168, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33 ], [ %137, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit26 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #45 resume { ptr, i32 } %.pn.pn.pn diff --git a/bench/wireshark/optimized/packet-ipmi-se.ll b/bench/wireshark/optimized/packet-ipmi-se.ll index 5858628d532..b7fb4615953 100644 --- a/bench/wireshark/optimized/packet-ipmi-se.ll +++ b/bench/wireshark/optimized/packet-ipmi-se.ll @@ -2274,8 +2274,8 @@ define internal void @rs2d(ptr noundef %0, ptr readnone captures(none) %1, ptr n %wide.trip.count = zext nneg i32 %11 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %27 - %indvars.iv28 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next29, %27 ] +.lr.ph: ; preds = %.lr.ph.preheader, %26 + %indvars.iv28 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next29, %26 ] %indvars30 = trunc i64 %indvars.iv28 to i32 %12 = or disjoint i32 %indvars30, 2 %13 = getelementptr [2 x ptr], ptr @rs2d.tsel, i64 0, i64 %indvars.iv28 @@ -2287,29 +2287,29 @@ define internal void @rs2d(ptr noundef %0, ptr readnone captures(none) %1, ptr n %19 = or i32 %18, 2 br label %20 -20: ; preds = %.lr.ph, %26 - %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %26 ] - %21 = getelementptr [8 x ptr], ptr %17, i64 0, i64 %indvars.iv - %22 = load ptr, ptr %21, align 8 - %.not = icmp eq ptr %22, null - br i1 %.not, label %26, label %23 +19: ; preds = %.lr.ph, %25 + %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %25 ] + %20 = getelementptr [8 x ptr], ptr %17, i64 0, i64 %indvars.iv + %21 = load ptr, ptr %20, align 8 + %.not = icmp eq ptr %21, null + br i1 %.not, label %25, label %22 -23: ; preds = %20 - %24 = load i32, ptr %22, align 4 - %25 = tail call ptr @proto_tree_add_item(ptr noundef %16, i32 noundef %24, ptr noundef %0, i32 noundef %19, i32 noundef 1, i32 noundef -2147483648) - br label %26 +22: ; preds = %19 + %23 = load i32, ptr %21, align 4 + %24 = tail call ptr @proto_tree_add_item(ptr noundef %16, i32 noundef %23, ptr noundef %0, i32 noundef %18, i32 noundef 1, i32 noundef -2147483648) + br label %25 -26: ; preds = %20, %23 +25: ; preds = %19, %22 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %.not31 = icmp eq i64 %indvars.iv, 0 - br i1 %.not31, label %27, label %20, !llvm.loop !6 + br i1 %.not31, label %26, label %19, !llvm.loop !6 -27: ; preds = %26 +26: ; preds = %25 %indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1 %exitcond.not = icmp eq i64 %indvars.iv.next29, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !8 -._crit_edge: ; preds = %27, %3 +._crit_edge: ; preds = %26, %3 ret void } @@ -3582,9 +3582,9 @@ define internal fastcc void @add_events(ptr noundef %0, i32 noundef range(i32 1, %7 = icmp slt i32 %1, %6 br i1 %7, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %5, %29 +.lr.ph: ; preds = %5, %28 %indvars.iv35 = phi i64 [ %indvars.iv.next36, %29 ], [ 0, %5 ] - %.033 = phi i32 [ %30, %29 ], [ %1, %5 ] + %.033 = phi i32 [ %29, %29 ], [ %1, %5 ] %8 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.033) %9 = zext i8 %8 to i32 %10 = getelementptr [4 x ptr], ptr @add_events.tsel, i64 0, i64 %indvars.iv35 @@ -3595,38 +3595,38 @@ define internal fastcc void @add_events(ptr noundef %0, i32 noundef range(i32 1, %15 = getelementptr [4 x [8 x ptr]], ptr @add_events.bsel, i64 0, i64 %indvars.iv35 br label %16 -16: ; preds = %.lr.ph, %28 +15: ; preds = %.lr.ph, %27 %indvars.iv = phi i64 [ 7, %.lr.ph ], [ %indvars.iv.next, %28 ] - %17 = getelementptr [8 x ptr], ptr %15, i64 0, i64 %indvars.iv - %18 = load ptr, ptr %17, align 8 - %.not = icmp eq ptr %18, null - br i1 %.not, label %28, label %19 - -19: ; preds = %16 - %20 = trunc nuw nsw i64 %indvars.iv to i32 - %21 = shl nuw i32 1, %20 - %22 = load i32, ptr %18, align 4 - %23 = and i32 %21, %9 - %24 = zext nneg i32 %23 to i64 - %25 = icmp ne i32 %23, 0 - %26 = tail call ptr @tfs_get_string(i1 noundef zeroext %25, ptr noundef %3) - %27 = tail call ptr (ptr, i32, ptr, i32, i32, i64, ptr, ...) @proto_tree_add_boolean_format_value(ptr noundef %14, i32 noundef %22, ptr noundef %0, i32 noundef %.033, i32 noundef 1, i64 noundef %24, ptr noundef nonnull @.str.1132, ptr noundef %26) - br label %28 + %16 = getelementptr [8 x ptr], ptr %15, i64 0, i64 %indvars.iv + %17 = load ptr, ptr %16, align 8 + %.not = icmp eq ptr %17, null + br i1 %.not, label %27, label %18 + +18: ; preds = %15 + %19 = trunc nuw nsw i64 %indvars.iv to i32 + %20 = shl nuw i32 1, %19 + %21 = load i32, ptr %17, align 4 + %22 = and i32 %20, %9 + %23 = zext nneg i32 %22 to i64 + %24 = icmp ne i32 %22, 0 + %25 = tail call ptr @tfs_get_string(i1 noundef zeroext %24, ptr noundef %3) + %26 = tail call ptr (ptr, i32, ptr, i32, i32, i64, ptr, ...) @proto_tree_add_boolean_format_value(ptr noundef %14, i32 noundef %21, ptr noundef %0, i32 noundef %.033, i32 noundef 1, i64 noundef %23, ptr noundef nonnull @.str.1132, ptr noundef %25) + br label %27 -28: ; preds = %16, %19 +27: ; preds = %15, %18 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %.not38 = icmp eq i64 %indvars.iv, 0 - br i1 %.not38, label %29, label %16, !llvm.loop !11 + br i1 %.not38, label %28, label %15, !llvm.loop !11 -29: ; preds = %28 +28: ; preds = %27 %indvars.iv.next36 = add nuw nsw i64 %indvars.iv35, 1 - %30 = add nuw nsw i32 %.033, 1 - %31 = icmp slt i32 %30, %6 - %32 = icmp samesign ult i64 %indvars.iv35, 3 - %33 = select i1 %31, i1 %32, i1 false - br i1 %33, label %.lr.ph, label %._crit_edge, !llvm.loop !12 + %29 = add nuw nsw i32 %.033, 1 + %30 = icmp slt i32 %29, %6 + %31 = icmp samesign ult i64 %indvars.iv35, 3 + %32 = select i1 %30, i1 %31, i1 false + br i1 %32, label %.lr.ph, label %._crit_edge, !llvm.loop !12 -._crit_edge: ; preds = %29, %5 +._crit_edge: ; preds = %28, %5 ret void } diff --git a/bench/wireshark/optimized/packet-rrc.ll b/bench/wireshark/optimized/packet-rrc.ll index 72d8a80231a..479f431e6d8 100644 --- a/bench/wireshark/optimized/packet-rrc.ll +++ b/bench/wireshark/optimized/packet-rrc.ll @@ -89147,7 +89147,7 @@ define internal i32 @dissect_rrc_RB_ActivationTimeInfo(ptr noundef %0, i32 nound %17 = icmp eq ptr %10, null %18 = icmp eq ptr %14, null %or.cond = select i1 %17, i1 true, i1 %18 - br i1 %or.cond, label %59, label %19 + br i1 %or.cond, label %58, label %19 19: ; preds = %5 %20 = getelementptr inbounds nuw i8, ptr %2, i64 48 @@ -89168,7 +89168,7 @@ private_data_get_ciphering_info.exit: ; preds = %19, %23 %29 = getelementptr inbounds nuw i8, ptr %28, i64 56 %30 = load ptr, ptr %29, align 8 %31 = icmp eq ptr %30, null - br i1 %31, label %59, label %32 + br i1 %31, label %58, label %32 32: ; preds = %private_data_get_ciphering_info.exit %33 = icmp eq ptr %28, null @@ -89213,7 +89213,7 @@ private_data_get_rlc_ciphering_sqn.exit: ; preds = %private_data_get_rb store i32 %51, ptr %58, align 4 br label %59 -59: ; preds = %private_data_get_ciphering_info.exit, %5, %private_data_get_rlc_ciphering_sqn.exit +58: ; preds = %private_data_get_ciphering_info.exit, %5, %private_data_get_rlc_ciphering_sqn.exit ret i32 %16 } diff --git a/bench/wireshark/optimized/tvbuff_hpackhuff.ll b/bench/wireshark/optimized/tvbuff_hpackhuff.ll index 792846b3a18..2f5a25b5012 100644 --- a/bench/wireshark/optimized/tvbuff_hpackhuff.ll +++ b/bench/wireshark/optimized/tvbuff_hpackhuff.ll @@ -33,13 +33,13 @@ define ptr @tvb_get_hpack_huffman_strbuf(ptr noundef %0, ptr noundef %1, i32 nou %.not22.i = icmp sgt i16 %19, -1 br i1 %.not22.i, label %23, label %20 -20: ; preds = %.lr.ph.i +20: ; preds = %.lr.ph.i %21 = getelementptr inbounds nuw i8, ptr %18, i64 2 %22 = load i8, ptr %21, align 2 tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %22) br label %23 -23: ; preds = %20, %.lr.ph.i +23:; preds = %20, %.lr.ph.i %24 = and i16 %19, 511 %25 = zext nneg i16 %24 to i64 %26 = getelementptr [0 x [16 x %struct.nghttp2_huff_decode]], ptr @huff_decode_table, i64 0, i64 %25 @@ -50,21 +50,21 @@ define ptr @tvb_get_hpack_huffman_strbuf(ptr noundef %0, ptr noundef %1, i32 nou %.not23.i = icmp sgt i16 %30, -1 br i1 %.not23.i, label %34, label %31 -31: ; preds = %23 +31:; preds = %23 %32 = getelementptr inbounds nuw i8, ptr %29, i64 2 %33 = load i8, ptr %32, align 2 tail call void @wmem_strbuf_append_c(ptr noundef %8, i8 noundef signext %33) br label %34 -34: ; preds = %31, %23 +34:; preds = %31, %23 %35 = add i64 %.02025.i, -1 %.not.i = icmp eq i64 %35, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !6 ._crit_edge.i: ; preds = %34 - %36 = and i16 %30, 16384 - %37 = icmp eq i16 %36, 0 - br i1 %37, label %._crit_edge.thread.i, label %get_hpack_huffman_strbuf.exit + %34 = and i16 %30, 16384 + %35 = icmp eq i16 %34, 0 + br i1 %35, label %._crit_edge.thread.i, label %get_hpack_huffman_strbuf.exit ._crit_edge.thread.i: ; preds = %._crit_edge.i, %4 tail call void @wmem_strbuf_destroy(ptr noundef %8) diff --git a/bench/yaml-cpp/optimized/stream.ll b/bench/yaml-cpp/optimized/stream.ll index f9f9dfb090c..ca6a72b9a37 100644 --- a/bench/yaml-cpp/optimized/stream.ll +++ b/bench/yaml-cpp/optimized/stream.ll @@ -55,12 +55,12 @@ define void @_ZN4YAML6StreamC2ERSi(ptr noundef nonnull align 8 dereferenceable(1 %16 = load i32, ptr %15, align 8, !tbaa !24 %17 = and i32 %16, 5 %.not35 = icmp eq i32 %17, 0 - br i1 %.not35, label %20, label %96 + br i1 %.not35, label %20, label %94 18: ; preds = %2 %19 = landingpad { ptr, i32 } cleanup - br label %100 + br label %98 20: ; preds = %8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #16 @@ -68,10 +68,10 @@ define void @_ZN4YAML6StreamC2ERSi(ptr noundef nonnull align 8 dereferenceable(1 br label %21 21: ; preds = %20, %.loopexit - %22 = phi i64 [ 0, %20 ], [ %60, %.loopexit ] + %22 = phi i64 [ 0, %20 ], [ %58, %.loopexit ] %.02644 = phi i32 [ 0, %20 ], [ %.127, %.loopexit ] %23 = invoke noundef i32 @_ZNSi3getEv(ptr noundef nonnull align 8 dereferenceable(16) %1) - to label %24 unwind label %54 + to label %24 unwind label %52 24: ; preds = %21 %25 = add i32 %.02644, 1 @@ -123,91 +123,91 @@ _ZN4YAML15IntroCharTypeOfEi.exit: ; preds = %24, %28, %29, %30, %41 = icmp sgt i8 %40, 0 br i1 %41, label %42, label %.loopexit -42: ; preds = %_ZN4YAML15IntroCharTypeOfEi.exit - %43 = load ptr, ptr %1, align 8, !tbaa !22 - %44 = getelementptr i8, ptr %43, i64 -24 - %45 = load i64, ptr %44, align 8 - %46 = getelementptr inbounds i8, ptr %1, i64 %45 - invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264) %46, i32 noundef 0) +40: ; preds = %_ZN4YAML15IntroCharTypeOfEi.exit + %41 = load ptr, ptr %1, align 8, !tbaa !22 + %42 = getelementptr i8, ptr %41, i64 -24 + %43 = load i64, ptr %42, align 8 + %44 = getelementptr inbounds i8, ptr %1, i64 %43 + invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264) %44, i32 noundef 0) to label %.preheader.preheader unwind label %.loopexit.split-lp -.preheader.preheader: ; preds = %42 - %47 = zext nneg i8 %40 to i32 - %48 = sext i32 %25 to i64 +.preheader.preheader: ; preds = %40 + %45 = zext nneg i8 %40 to i32 + %46 = sext i32 %25 to i64 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %56 - %indvars.iv = phi i64 [ %48, %.preheader.preheader ], [ %indvars.iv.next, %56 ] - %.043 = phi i32 [ %47, %.preheader.preheader ], [ %57, %56 ] +.preheader: ; preds = %.preheader.preheader, %54 + %indvars.iv = phi i64 [ %46, %.preheader.preheader ], [ %indvars.iv.next, %56 ] + %.043 = phi i32 [ %45, %.preheader.preheader ], [ %55, %56 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %49 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %indvars.iv.next - %50 = load i32, ptr %49, align 4, !tbaa !33 - %.not = icmp eq i32 %50, -1 - br i1 %.not, label %56, label %51 - -51: ; preds = %.preheader - %52 = trunc i32 %50 to i8 - %53 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7putbackEc(ptr noundef nonnull align 8 dereferenceable(16) %1, i8 noundef signext %52) + %47 = getelementptr inbounds [4 x i32], ptr %3, i64 0, i64 %indvars.iv.next + %48 = load i32, ptr %47, align 4, !tbaa !33 + %.not = icmp eq i32 %48, -1 + br i1 %.not, label %54, label %49 + +49: ; preds = %.preheader + %50 = trunc i32 %48 to i8 + %51 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7putbackEc(ptr noundef nonnull align 8 dereferenceable(16) %1, i8 noundef signext %50) to label %56 unwind label %.loopexit37 -54: ; preds = %21 - %55 = landingpad { ptr, i32 } +52: ; preds = %21 + %53 = landingpad { ptr, i32 } cleanup - br label %99 + br label %97 -.loopexit37: ; preds = %51 +.loopexit37: ; preds = %49 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %99 + br label %97 -.loopexit.split-lp: ; preds = %42 +.loopexit.split-lp: ; preds = %40 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %99 + br label %97 -56: ; preds = %.preheader, %51 - %57 = add nsw i32 %.043, -1 - %58 = icmp sgt i32 %.043, 1 - br i1 %58, label %.preheader, label %.loopexit.loopexit, !llvm.loop !37 +54: ; preds = %.preheader, %49 + %55 = add nsw i32 %.043, -1 + %56 = icmp sgt i32 %.043, 1 + br i1 %56, label %.preheader, label %.loopexit.loopexit, !llvm.loop !37 -.loopexit.loopexit: ; preds = %56 - %59 = trunc nsw i64 %indvars.iv.next to i32 +.loopexit.loopexit: ; preds = %54 + %57 = trunc nsw i64 %indvars.iv.next to i32 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %_ZN4YAML15IntroCharTypeOfEi.exit - %.127 = phi i32 [ %25, %_ZN4YAML15IntroCharTypeOfEi.exit ], [ %59, %.loopexit.loopexit ] - %60 = zext i32 %37 to i64 - %61 = getelementptr inbounds nuw [19 x i8], ptr @_ZN4YAMLL17s_introFinalStateE, i64 0, i64 %60 - %62 = load i8, ptr %61, align 1, !tbaa !39, !range !41, !noundef !42 - %63 = trunc nuw i8 %62 to i1 - br i1 %63, label %64, label %21, !llvm.loop !43 - -64: ; preds = %.loopexit + %.127 = phi i32 [ %25, %_ZN4YAML15IntroCharTypeOfEi.exit ], [ %57, %.loopexit.loopexit ] + %58 = zext i32 %37 to i64 + %59 = getelementptr inbounds nuw [19 x i8], ptr @_ZN4YAMLL17s_introFinalStateE, i64 0, i64 %58 + %60 = load i8, ptr %59, align 1, !tbaa !39, !range !41, !noundef !42 + %61 = trunc nuw i8 %60 to i1 + br i1 %61, label %62, label %21, !llvm.loop !43 + +62: ; preds = %.loopexit %switch.tableidx = add i32 %37, -4 - %65 = icmp ult i32 %switch.tableidx, 8 - br i1 %65, label %switch.lookup, label %67 + %63 = icmp ult i32 %switch.tableidx, 8 + br i1 %63, label %switch.lookup, label %65 -switch.lookup: ; preds = %64 - %66 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZN4YAML6StreamC2ERSi, i64 0, i64 %66 +switch.lookup: ; preds = %62 + %64 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZN4YAML6StreamC2ERSi, i64 0, i64 %64 %switch.load = load i32, ptr %switch.gep, align 4 - br label %67 + br label %65 -67: ; preds = %64, %switch.lookup +65: ; preds = %62, %switch.lookup %.sink = phi i32 [ %switch.load, %switch.lookup ], [ 0, %64 ] store i32 %.sink, ptr %5, align 4, !tbaa !44 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %69 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 104 %71 = load ptr, ptr %70, align 8, !tbaa !45 %72 = getelementptr inbounds nuw i8, ptr %0, i64 72 %73 = load ptr, ptr %72, align 8, !tbaa !45 - %74 = ptrtoint ptr %71 to i64 + %74 = ptrtoint ptr %71 to i62 %75 = ptrtoint ptr %73 to i64 %76 = sub i64 %74, %75 %77 = ashr exact i64 %76, 3 %78 = icmp ne ptr %71, null - %.neg.i.i.i = sext i1 %78 to i64 + %.neg.i.i.i = sext i1 %78 to i62 %79 = add nsw i64 %77, %.neg.i.i.i %80 = shl nsw i64 %79, 9 %81 = load ptr, ptr %68, align 8, !tbaa !46 @@ -218,36 +218,36 @@ switch.lookup: ; preds = %64 %86 = getelementptr inbounds nuw i8, ptr %0, i64 64 %87 = load ptr, ptr %86, align 8, !tbaa !48 %88 = load ptr, ptr %69, align 8, !tbaa !46 - %89 = ptrtoint ptr %87 to i64 - %90 = ptrtoint ptr %88 to i64 + %89 = ptrtoint ptr %87 to i62 + %90 = ptrtoint ptr %88 to i62 %91 = sub i64 %84, %85 %92 = add i64 %91, %89 %93 = add i64 %92, %80 %.not36 = icmp eq i64 %93, %90 br i1 %.not36, label %94, label %_ZNK4YAML6Stream11ReadAheadToEm.exit -94: ; preds = %67 +94:; preds = %65 %95 = invoke noundef zeroext i1 @_ZNK4YAML6Stream12_ReadAheadToEm(ptr noundef nonnull align 8 dereferenceable(136) %0, i64 noundef 0) to label %_ZNK4YAML6Stream11ReadAheadToEm.exit unwind label %97 _ZNK4YAML6Stream11ReadAheadToEm.exit: ; preds = %67, %94 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #16 - br label %96 + br label %94 -96: ; preds = %8, %_ZNK4YAML6Stream11ReadAheadToEm.exit +94: ; preds = %8, %_ZNK4YAML6Stream11ReadAheadToEm.exit ret void -97: ; preds = %94 - %98 = landingpad { ptr, i32 } +95: ; preds = %94 + %96 = landingpad { ptr, i32 } cleanup - br label %99 + br label %97 -99: ; preds = %.loopexit37, %.loopexit.split-lp, %54, %97 - %.pn.pn = phi { ptr, i32 } [ %98, %97 ], [ %55, %54 ], [ %lpad.loopexit, %.loopexit37 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +97: ; preds = %.loopexit37, %.loopexit.split-lp, %52, %95 + %.pn.pn = phi { ptr, i32 } [ %96, %97 ], [ %53, %54 ], [ %lpad.loopexit, %.loopexit37 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #16 - br label %100 + br label %98 -100: ; preds = %99, %18 +98: ; preds = %97, %18 %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %99 ], [ %19, %18 ] tail call void @_ZNSt5dequeIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #16 resume { ptr, i32 } %.pn.pn.pn diff --git a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll index 10b8fab020f..3e7403e641d 100644 --- a/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll +++ b/bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll @@ -18900,9 +18900,9 @@ define hidden void @"_ZN3vte15Parser$LT$_$GT$7advance17h0b335f80a3e540f3E.llvm.1 %18 = getelementptr inbounds nuw [256 x i8], ptr @_ZN3vte5table13STATE_CHANGES17hc24d991888848aafE, i64 0, i64 %17 %19 = load i8, ptr %18, align 1, !noundef !4 %20 = icmp eq i8 %19, 0 - br i1 %20, label %21, label %26 + br i1 %20, label %21, label %25 -"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit": ; preds = %37, %30, %8 +"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit": ; preds = %36, %29, %8 ret void 21: ; preds = %16 @@ -18912,61 +18912,61 @@ define hidden void @"_ZN3vte15Parser$LT$_$GT$7advance17h0b335f80a3e540f3E.llvm.1 %25 = load i8, ptr %24, align 1, !noundef !4 br label %26 -26: ; preds = %16, %21 +25: ; preds = %16, %21 %.sroa.01.0 = phi i8 [ %25, %21 ], [ %19, %16 ] - %27 = and i8 %.sroa.01.0, 15 - %28 = lshr i8 %.sroa.01.0, 4 - %29 = icmp eq i8 %27, 0 - br i1 %29, label %30, label %31 + %26 = and i8 %.sroa.01.0, 15 + %27 = lshr i8 %.sroa.01.0, 4 + %28 = icmp eq i8 %26, 0 + br i1 %28, label %29, label %30 -30: ; preds = %26 - tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %28, i8 noundef %2) +29: ; preds = %25 + tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %27, i8 noundef %2) br label %"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit" -31: ; preds = %26 +30: ; preds = %25 switch i8 %6, label %32 [ i8 9, label %.sink.split.i - i8 13, label %34 + i8 13, label %33 ] -.sink.split.i: ; preds = %34, %31 +.sink.split.i: ; preds = %33, %30 %.sink.i = phi i8 [ 8, %34 ], [ 14, %31 ] tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef %.sink.i, i8 noundef %2) - br label %32 + br label %31 -32: ; preds = %.sink.split.i, %31 - %33 = icmp ult i8 %.sroa.01.0, 16 - br i1 %33, label %35, label %36 +31: ; preds = %.sink.split.i, %30 + %32 = icmp ult i8 %.sroa.01.0, 16 + br i1 %32, label %34, label %35 -34: ; preds = %31 +33: ; preds = %30 br label %.sink.split.i -35: ; preds = %36, %32 - switch i8 %27, label %37 [ +34: ; preds = %35, %31 + switch i8 %26, label %37 [ i8 1, label %.sink.split6.i i8 5, label %.sink.split6.i - i8 9, label %38 + i8 9, label %37 i8 10, label %.sink.split6.i - i8 13, label %39 + i8 13, label %38 ] -36: ; preds = %32 - tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %28, i8 noundef %2) - br label %35 +35: ; preds = %31 + tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef range(i8 0, 16) %27, i8 noundef %2) + br label %34 -.sink.split6.i: ; preds = %39, %38, %35, %35, %35 +.sink.split6.i: ; preds = %38, %37, %34, %34, %34 %.sink7.i = phi i8 [ 10, %39 ], [ 6, %38 ], [ 1, %35 ], [ 1, %35 ], [ 1, %35 ] tail call fastcc void @"_ZN3vte15Parser$LT$_$GT$14perform_action17h791f55af36fc1fb3E"(ptr noalias noundef nonnull align 8 dereferenceable(424) %0, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, i8 noundef %.sink7.i, i8 noundef %2) - br label %37 + br label %36 -37: ; preds = %.sink.split6.i, %35 - store i8 %27, ptr %5, align 1, !alias.scope !2670, !noalias !2673 +36: ; preds = %.sink.split6.i, %34 + store i8 %26, ptr %5, align 1, !alias.scope !2670, !noalias !2673 br label %"_ZN3vte15Parser$LT$_$GT$20perform_state_change17hbae91e61e0bc7f22E.exit" -38: ; preds = %35 +37: ; preds = %34 br label %.sink.split6.i -39: ; preds = %35 +38: ; preds = %34 br label %.sink.split6.i } diff --git a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll index 1bd4411fb9f..cec65f6dec9 100644 --- a/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll +++ b/bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll @@ -114303,8 +114303,8 @@ define { float, float } @_ZN4gpui5scene20TransformationMatrix5apply17hbe9a2a3129 store i64 %8, ptr %4, align 8 br label %.split -.loopexit: ; preds = %18 - store float %25, ptr %.sroa.0.0.ptr34, align 4 +.loopexit: ; preds = %17 + store float %24, ptr %.sroa.0.0.ptr34, align 4 %9 = icmp eq i64 %.sroa.0.0.add, 8 br i1 %9, label %10, label %.split @@ -114326,22 +114326,22 @@ define { float, float } @_ZN4gpui5scene20TransformationMatrix5apply17hbe9a2a3129 %16 = add nuw nsw i64 %.sroa.7.032, 1 %17 = getelementptr inbounds nuw [2 x [2 x float]], ptr %0, i64 0, i64 %.sroa.7.032 %.sroa.0.0.ptr.promoted = load float, ptr %.sroa.0.0.ptr34, align 4 - br label %18 + br label %17 -18: ; preds = %18, %.split - %19 = phi float [ %.sroa.0.0.ptr.promoted, %.split ], [ %25, %18 ] - %.sroa.715.029 = phi i64 [ 0, %.split ], [ %20, %18 ] +17: ; preds = %17, %.split + %18 = phi float [ %.sroa.0.0.ptr.promoted, %.split ], [ %24, %18 ] + %.sroa.715.029 = phi i64 [ 0, %.split ], [ %19, %18 ] %.sroa.013.0.idx28 = phi i64 [ 0, %.split ], [ %.sroa.013.0.add, %18 ] - %20 = add nuw nsw i64 %.sroa.715.029, 1 + %19 = add nuw nsw i64 %.sroa.715.029, 1 %.sroa.013.0.add = add nuw nsw i64 %.sroa.013.0.idx28, 4 %.sroa.013.0.ptr30 = getelementptr inbounds nuw i8, ptr %5, i64 %.sroa.013.0.idx28 - %21 = getelementptr inbounds nuw [2 x float], ptr %17, i64 0, i64 %.sroa.715.029 - %22 = load float, ptr %21, align 4, !noundef !9 - %23 = load float, ptr %.sroa.013.0.ptr30, align 4, !noundef !9 - %24 = fmul float %22, %23 - %25 = fadd float %19, %24 - %26 = icmp eq i64 %.sroa.013.0.add, 8 - br i1 %26, label %.loopexit, label %18 + %20 = getelementptr inbounds nuw [2 x float], ptr %17, i64 0, i64 %.sroa.715.029 + %21 = load float, ptr %20, align 4, !noundef !9 + %22 = load float, ptr %.sroa.013.0.ptr30, align 4, !noundef !9 + %23 = fmul float %21, %22 + %24 = fadd float %18, %23 + %25 = icmp eq i64 %.sroa.013.0.add, 8 + br i1 %25, label %.loopexit, label %17 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable