Skip to content

Conversation

@zyw-bot
Copy link
Collaborator

@zyw-bot zyw-bot commented Jul 23, 2025

Link: llvm/llvm-project#137297
Requested by: @nikic

@github-actions github-actions bot mentioned this pull request Jul 23, 2025
@zyw-bot
Copy link
Collaborator Author

zyw-bot commented Jul 23, 2025

Diff mode

runner: ariselab-64c-docker
baseline: llvm/llvm-project@9d11acc
patch: llvm/llvm-project#137297
sha256: 286a66c5244eb76184e6de00e2e1f9437d69b42c41dd52da484c33ec116df595
commit: 6ab07ec

1385 files changed, 1915227 insertions(+), 1900919 deletions(-)

Improvements:
  reassociate.NumAnnihil 832 -> 833 +0.12%
  licm.NumHoisted 5626723 -> 5633416 +0.12%
  memory-builtins.ObjectVisitorLoad 2480154 -> 2481886 +0.07%
  memdep.NumCacheNonLocalPtr 284033009 -> 284221446 +0.07%
  loop-instsimplify.NumSimplified 196631 -> 196743 +0.06%
  simple-loop-unswitch.NumSwitches 2032 -> 2033 +0.05%
  memdep.NumCacheCompleteNonLocalPtr 5690528 -> 5692996 +0.04%
  licm.NumBOAssociationsHoisted 7182 -> 7185 +0.04%
  scalar-evolution.NumExitCountsComputed 4283256 -> 4284882 +0.04%
  memdep.NumUncacheNonLocalPtr 269925119 -> 270023091 +0.04%
Regressions:
  scalar-evolution.NumBruteForceTripCountsComputed 40453 -> 40297 -0.39%
  licm.NumGEPsHoisted 60965 -> 60761 -0.33%
  indvars.NumElimIdentity 1880 -> 1879 -0.05%
  dse.NumFastOther 516544 -> 516332 -0.04%
  instcombine.NumConstProp 164712 -> 164645 -0.04%
  simple-loop-unswitch.NumSelects 2651 -> 2650 -0.04%
  instcombine.NumDeadInst 44245061 -> 44231006 -0.03%
  simplifycfg.NumLinearMaps 4157 -> 4156 -0.02%
  memdep.NumCacheDirtyNonLocalPtr 25390 -> 25386 -0.02%
  instcombine.NumCombined 130196028 -> 130182599 -0.01%

18 17 bench/abc/optimized/dauNpn2.ll
27 24 bench/abc/optimized/extraBddMisc.ll
5 4 bench/abc/optimized/ifMap.ll
8 7 bench/abc/optimized/mapperUtils.ll
5 4 bench/abc/optimized/mpmLib.ll
16 16 bench/abseil-cpp/optimized/crc.ll
20 23 bench/actix-rs/optimized/4pmtvrahn6eloepe.ll
11 9 bench/arrow/optimized/time.ll
29 28 bench/assimp/optimized/ASEParser.ll
13 12 bench/boost/optimized/formatters_cache.ll
16 14 bench/box2d/optimized/linux_joystick.ll
29 24 bench/bullet3/optimized/btCollisionDispatcher.ll
74 66 bench/bullet3/optimized/btDeformableBodySolver.ll
17 16 bench/clamav/optimized/Ppmd7.ll
15 14 bench/clamav/optimized/pe_icons.ll
8 7 bench/clap-rs/optimized/5651dp9k16h53y8x.ll
44 42 bench/cmake/optimized/nghttp2_hd_huffman.ll
35 31 bench/darktable/optimized/blend.ll
15 13 bench/darktable/optimized/colordata.ll
6 4 bench/darktable/optimized/exif_gps.ll
8 6 bench/darktable/optimized/identify_tools.ll
8 7 bench/darktable/optimized/libraw_c_api.ll
13 11 bench/duckdb/optimized/aria.ll
3 1 bench/ffmpeg/optimized/aptxdec.ll
14 8 bench/ffmpeg/optimized/msmpeg4_vc1_data.ll
11 14 bench/ffmpeg/optimized/pafvideo.ll
12 11 bench/ffmpeg/optimized/vf_fftdnoiz.ll
6 5 bench/flac/optimized/lpc.ll
2 2 bench/folly/optimized/CompressionContextPoolSingletons.ll
16 15 bench/freetype/optimized/truetype.ll
21 20 bench/graphviz/optimized/mincross.ll
12 9 bench/gromacs/optimized/boxdeformation.ll
5 4 bench/gromacs/optimized/hxprops.ll
6 5 bench/gromacs/optimized/pbc_simd.ll
5 3 bench/gromacs/optimized/sm_simple.ll
29 28 bench/grpc/optimized/executor.ll
2 1 bench/hermes/optimized/rustgen.ll
114 113 bench/hwloc/optimized/common-ps.ll
5 4 bench/icu/optimized/cecal.ll
8 4 bench/image-rs/optimized/5oy2v8fghrh79s8.ll
1 1 bench/jq/optimized/jv_print.ll
10 8 bench/libigl/optimized/canonical_quaternions.ll
12 10 bench/libjpeg-turbo/optimized/jquant1.ll
55 52 bench/libwebp/optimized/filter_enc.ll
21 20 bench/libwebp/optimized/vp8_dec.ll
48 46 bench/lief/optimized/aria.ll
4 2 bench/linux/optimized/forcedeth.ll
5 3 bench/linux/optimized/intel_guc_submission.ll
15 14 bench/llvm/optimized/PreISelIntrinsicLowering.ll
7 5 bench/llvm/optimized/Process.ll
7 6 bench/llvm/optimized/X86InstrInfo.ll
15 13 bench/llvm/optimized/X86TargetMachine.ll
29 30 bench/lua/optimized/lstring.ll
52 48 bench/luau/optimized/AssemblyBuilderX64.ll
22 19 bench/lvgl/optimized/lv_ime_pinyin.ll
19 14 bench/lvgl/optimized/lv_matrix.ll
53 48 bench/memcached/optimized/thread.ll
17 15 bench/meshlab/optimized/cubemap.ll
43 38 bench/meshlab/optimized/filter_layer.ll
53 50 bench/meshlab/optimized/mesh_model.ll
25 17 bench/meshoptimizer/optimized/spatialorder.ll
9 5 bench/minetest/optimized/CGUIListBox.ll
12 6 bench/minetest/optimized/voxelalgorithms.ll
17 15 bench/mitsuba3/optimized/struct.ll
22 21 bench/oiio/optimized/imageio.ll
3 2 bench/oiio/optimized/psdinput.ll
4 4 bench/oniguruma/optimized/unicode.ll
4 3 bench/open3d/optimized/ImageCPU.ll
8 10 bench/open3d/optimized/ScalableTSDFVolume.ll
24 22 bench/opencc/optimized/bit-vector.ll
9 8 bench/opencv/optimized/AKAZEFeatures.ll
46 37 bench/opencv/optimized/ap3p.ll
17 16 bench/opencv/optimized/trackerKCF.ll
17 15 bench/openjdk/optimized/AlphaMath.ll
12 10 bench/openjdk/optimized/archiveBuilder.ll
46 44 bench/openjdk/optimized/assembler_x86.ll
17 16 bench/openjdk/optimized/castnode.ll
22 19 bench/openjdk/optimized/img_globals.ll
24 22 bench/openspiel/optimized/CalcTables.ll
22 21 bench/openspiel/optimized/PBN.ll
90 89 bench/openssl/optimized/quic_ackm.ll
46 40 bench/openssl/optimized/quic_cfq_test.ll
12 14 bench/openusd/optimized/av1_dx_iface.ll
31 29 bench/openusd/optimized/blockd.ll
6 2 bench/openusd/optimized/matrix2d.ll
4 3 bench/openusd/optimized/seg_common.ll
9 7 bench/ozz-animation/optimized/skinning_job.ll
76 61 bench/pbrt-v4/optimized/color.ll
12 10 bench/pbrt-v4/optimized/vecmath.ll
27 24 bench/php/optimized/in_body.ll
6 4 bench/pocketpy/optimized/linalg.ll
32 29 bench/postgres/optimized/dt_common.ll
33 31 bench/postgres/optimized/localtime.ll
5 6 bench/postgres/optimized/tidbitmap.ll
14 13 bench/postgres/optimized/xlogstats.ll
26 24 bench/proj/optimized/defmodel.ll
60 57 bench/proj/optimized/healpix.ll
25 23 bench/proj/optimized/test_defmodel.ll
32 31 bench/qemu/optimized/ahci.ll
60 58 bench/qemu/optimized/job.ll
3 2 bench/quantlib/optimized/exponentialfittinghestonengine.ll
8 4 bench/quantlib/optimized/perturbativebarrieroptionengine.ll
13 12 bench/ruby/optimized/cp949.ll
53 50 bench/ruby/optimized/euc_tw.ll
4 3 bench/ruby/optimized/regcomp.ll
9 12 bench/sdl/optimized/SDL_alsa_audio.ll
62 60 bench/sdl/optimized/SDL_audioresample.ll
17 15 bench/sdl/optimized/SDL_gamepad.ll
66 57 bench/slurm/optimized/cpu_frequency.ll
12 11 bench/slurm/optimized/proc_args.ll
22 21 bench/spike/optimized/plic.ll
38 35 bench/stb/optimized/stb_ds.ll
32 28 bench/stb/optimized/stb_image_resize2.ll
19 16 bench/tev/optimized/UberShader.ll
20 19 bench/turborepo-rs/optimized/7r1ggvy9mvit53mkmhrbr5w1w.ll
18 17 bench/verilator/optimized/V3PreProc.ll
11 9 bench/wireshark/optimized/packet-ipmi-se.ll
5 4 bench/wireshark/optimized/packet-rrc.ll
41 39 bench/wireshark/optimized/tvbuff_hpackhuff.ll
49 47 bench/yaml-cpp/optimized/stream.ll
9 8 bench/zed-rs/optimized/38cn6p2m6864jrrxog4mr8xwk.ll
5 4 bench/zed-rs/optimized/738kk4f8xx4axqteya4t2w4qw.ll

@github-actions
Copy link
Contributor

The provided diff contains numerous changes across multiple LLVM IR files, primarily involving transformations of getelementptr (GEP) instructions and loop structure modifications. After filtering out non-interesting changes (e.g., formatting, renaming, and reordering), the major changes are summarized as follows:

  1. Flattening of Multi-dimensional GEP Chains:
    Many getelementptr instructions that accessed deeply nested arrays (e.g., [A x [B x [C x T]]]) are transformed into a two-step process: first computing a base pointer to an intermediate array, then indexing into it. This improves clarity and may enable better optimization by simplifying address computation.

  2. Introduction of Invariant GEPs in Loops:
    In several functions, common subexpression GEPs that depend only on loop-invariant indices are hoisted out of inner loops and stored in dedicated variables (e.g., %invariant.gep). This reduces redundant pointer arithmetic and supports loop-invariant code motion.

  3. Loop Phi Node and Control Flow Adjustments:
    Changes to phi nodes in loop headers reflect updated control flow, often due to loop splitting or restructuring. In some cases, successor blocks in phi nodes are updated to reflect new control flow paths after refactoring.

  4. Simplification of Array Indexing in Nested Loops:
    Inner loop GEPs that previously used multiple dynamic indices are simplified by precomputing outer-dimension base pointers. This reduces the number of operands in GEPs and can improve register allocation and instruction scheduling.

  5. Updates to PHI Node Mappings After Control Flow Changes:
    PHI nodes in merge blocks are updated to reflect new predecessor blocks or corrected value mappings, ensuring proper dominance and SSA form after loop and control flow transformations.

These changes collectively suggest a refactoring aimed at improving loop performance through better memory access patterns, elimination of redundant computations, and enhanced optimization opportunities via code hoisting and GEP simplification.

model: qwen-plus-latest
CompletionUsage(completion_tokens=405, prompt_tokens=110607, total_tokens=111012, completion_tokens_details=None, prompt_tokens_details=None)

%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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regression.

@nikic
Copy link

nikic commented Jul 23, 2025

/add-label reviewed
/close

@github-actions github-actions bot closed this Jul 23, 2025
@dtcxzyw dtcxzyw deleted the test-run16480188492 branch July 29, 2025 18:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants