This is an archive of the discontinued LLVM Phabricator instance.

[JumpThreading] Process range comparisions with non-local cmp instructions
ClosedPublic

Authored by kachkov98 on Aug 16 2022, 4:38 AM.

Details

Summary

Use getPredicateOnEdge method if value is a non-local compare-with-a-constant instruction,
that can give more precise results than getConstantOnEdge.

Diff Detail

Event Timeline

kachkov98 created this revision.Aug 16 2022, 4:38 AM
Herald added a project: Restricted Project. · View Herald TranscriptAug 16 2022, 4:38 AM
Herald added a subscriber: hiraditya. · View Herald Transcript
kachkov98 requested review of this revision.Aug 16 2022, 4:38 AM
Herald added a project: Restricted Project. · View Herald TranscriptAug 16 2022, 4:38 AM
kachkov98 added a subscriber: anton-afanasyev.

test-suite results:

Metric: jump-threading.NumThreads

Program                                                                                                           jump-threading.NumThreads                    
                                                                                                                  baseline                  jumpthreading diff 
                                                test-suite :: MultiSource/Benchmarks/MallocBench/cfrac/cfrac.test   14.00                     19.00       35.7%
                                              test-suite :: MultiSource/Benchmarks/Rodinia/backprop/backprop.test    3.00                      4.00       33.3%
                                             test-suite :: SingleSource/Benchmarks/Adobe-C++/functionobjects.test   20.00                     22.00       10.0%
                                         test-suite :: MultiSource/Benchmarks/Prolangs-C/assembler/assembler.test   26.00                     28.00        7.7%
                                                      test-suite :: MultiSource/Applications/obsequi/Obsequi.test   39.00                     42.00        7.7%
                                                  test-suite :: MultiSource/Benchmarks/FreeBench/pifft/pifft.test   43.00                     45.00        4.7%
                                       test-suite :: MultiSource/Applications/ALAC/encode/alacconvert-encode.test   24.00                     25.00        4.2%
                                       test-suite :: MultiSource/Applications/ALAC/decode/alacconvert-decode.test   24.00                     25.00        4.2%
                                           test-suite :: MultiSource/Benchmarks/Prolangs-C/unix-tbl/unix-tbl.test   51.00                     53.00        3.9%
                                                     test-suite :: MultiSource/Applications/JM/lencod/lencod.test  704.00                    726.00        3.1%
                                           test-suite :: MultiSource/Benchmarks/Prolangs-C/football/football.test   89.00                     91.00        2.2%
                                                   test-suite :: MultiSource/Benchmarks/mafft/pairlocalalign.test  326.00                    333.00        2.1%
                                                     test-suite :: MultiSource/Applications/JM/ldecod/ldecod.test  345.00                    352.00        2.0%
                                                 test-suite :: MultiSource/Benchmarks/Prolangs-C/agrep/agrep.test   52.00                     53.00        1.9%
                                                        test-suite :: MultiSource/Applications/treecc/treecc.test   56.00                     57.00        1.8%
                                                            test-suite :: MultiSource/Benchmarks/PAQ8p/paq8p.test  112.00                    114.00        1.8%
                                          test-suite :: MultiSource/Benchmarks/MallocBench/espresso/espresso.test  117.00                    119.00        1.7%
                                                      test-suite :: MultiSource/Applications/ClamAV/clamscan.test 1365.00                   1384.00        1.4%
                                                  test-suite :: MultiSource/Applications/lambda-0.1.3/lambda.test   74.00                     75.00        1.4%
                                          test-suite :: MultiSource/Benchmarks/DOE-ProxyApps-C++/CLAMR/CLAMR.test  746.00                    755.00        1.2%
                                                      test-suite :: MultiSource/Applications/sqlite3/sqlite3.test 1518.00                   1534.00        1.1%
                                    test-suite :: MultiSource/Benchmarks/MiBench/office-ispell/office-ispell.test  110.00                    111.00        0.9%
                                                              test-suite :: MultiSource/Applications/lua/lua.test  229.00                    231.00        0.9%
                                    test-suite :: MultiSource/Benchmarks/MiBench/consumer-jpeg/consumer-jpeg.test  126.00                    127.00        0.8%
                                          test-suite :: MultiSource/Benchmarks/mediabench/jpeg/jpeg-6a/cjpeg.test  137.00                    138.00        0.7%
                                                      test-suite :: MultiSource/Benchmarks/MallocBench/gs/gs.test  288.00                    290.00        0.7%
                                                          test-suite :: MultiSource/Applications/SPASS/SPASS.test 1205.00                   1212.00        0.6%
                                   test-suite :: MultiSource/Benchmarks/Prolangs-C/TimberWolfMC/timberwolfmc.test  211.00                    212.00        0.5%
                                                        test-suite :: MultiSource/Applications/oggenc/oggenc.test  324.00                    325.00        0.3%
                                                          test-suite :: MultiSource/Benchmarks/Bullet/bullet.test  554.00                    555.00        0.2%
                                                    test-suite :: MultiSource/Benchmarks/7zip/7zip-benchmark.test 1731.00                   1734.00        0.2%
nikic accepted this revision.Sep 1 2022, 5:58 AM

LGTM

This revision is now accepted and ready to land.Sep 1 2022, 5:58 AM

Thank you @nikic! I don't have commit access, could you please submit it?

nikic added a comment.Sep 2 2022, 12:32 AM

Sure, could you please share Name <email> to use for the commit?

Sure, could you please share Name <email> to use for the commit?

Sergey Kachkov sergey.kachkov@syntacore.com

This revision was landed with ongoing or failed builds.Sep 2 2022, 3:22 AM
This revision was automatically updated to reflect the committed changes.