[PATCH] D60580: [GlobalISel] Enable CSE in the IRTranslator & legalizer for -O0 with constants only

Amara Emerson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 11 13:56:04 PDT 2019


aemerson created this revision.
aemerson added reviewers: aditya_nandakumar, paquette, qcolombet, arsenm, Petar.Avramovic, rovka, kristof.beyls.
aemerson added a project: LLVM.
Herald added subscribers: volkan, atanasyan, jrtc27, hiraditya, javed.absar, aprantl, nhaehnle, wdng, jvesely, sdardis.

Other opcodes shouldn't be CSE'd until we can be sure debug info quality won't be degraded.

This change also improves the IRTranslator so that in most places, but not all, it creates constants using the MIRBuilder directly instead of first creating a new destination vreg and then creating a constant. By doing this, the buildConstant() method can just return the vreg of an existing G_CONSTANT instead of having to create a COPY from it.

I measured a 0.2% improvement in compile time and a 0.9% improvement in code size at -O0.

  Compile time:
  Program                                        base   cse    diff
  test-suite...ark/tramp3d-v4/tramp3d-v4.test     9.04   9.12  0.8%
  test-suite...Mark/mafft/pairlocalalign.test     2.68   2.66 -0.7%
  test-suite...-typeset/consumer-typeset.test     5.53   5.51 -0.4%
  test-suite :: CTMark/lencod/lencod.test         5.30   5.28 -0.3%
  test-suite :: CTMark/Bullet/bullet.test        25.82  25.76 -0.2%
  test-suite...:: CTMark/ClamAV/clamscan.test     6.92   6.90 -0.2%
  test-suite...TMark/7zip/7zip-benchmark.test    34.24  34.17 -0.2%
  test-suite :: CTMark/SPASS/SPASS.test           6.25   6.24 -0.1%
  test-suite...:: CTMark/sqlite3/sqlite3.test     1.66   1.66 -0.1%
  test-suite :: CTMark/kimwitu++/kc.test         13.61  13.60 -0.0%
  Geomean difference                                          -0.2%
  
  Code size:
  Program                                        base     cse      diff
  test-suite...-typeset/consumer-typeset.test    1315632  1266480 -3.7%
  test-suite...:: CTMark/ClamAV/clamscan.test    1313892  1297508 -1.2%
  test-suite :: CTMark/lencod/lencod.test        1439504  1423112 -1.1%
  test-suite...TMark/7zip/7zip-benchmark.test    2936980  2904172 -1.1%
  test-suite :: CTMark/Bullet/bullet.test        3478276  3445460 -0.9%
  test-suite...ark/tramp3d-v4/tramp3d-v4.test    8082868  8033492 -0.6%
  test-suite :: CTMark/kimwitu++/kc.test         3870380  3853972 -0.4%
  test-suite :: CTMark/SPASS/SPASS.test          1434904  1434896 -0.0%
  test-suite...Mark/mafft/pairlocalalign.test    764528   764528   0.0%
  test-suite...:: CTMark/sqlite3/sqlite3.test    782092   782092   0.0%
  Geomean difference                                              -0.9%


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D60580

Files:
  llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
  llvm/lib/CodeGen/GlobalISel/Legalizer.cpp
  llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
  llvm/lib/CodeGen/TargetPassConfig.cpp
  llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
  llvm/test/CodeGen/AArch64/GlobalISel/call-translator-ios.ll
  llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmp.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-div.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-ext.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-store-s128-unaligned.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-merge-values.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-phi.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-rem.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-shift.mir
  llvm/test/CodeGen/AArch64/GlobalISel/legalize-vaarg.mir
  llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-addrspacecast.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ashr.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-bswap.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ctlz-zero-undef.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ctlz.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ctpop.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-cttz-zero-undef.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-cttz.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-icmp.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-lshr.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-merge-values.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-shl.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-uaddo.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-unmerge-values.mir
  llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-usubo.mir
  llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-bitcounts.mir
  llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-divmod.mir
  llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
  llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-load-store.mir
  llvm/test/CodeGen/Mips/GlobalISel/legalizer/add.mir
  llvm/test/CodeGen/Mips/GlobalISel/legalizer/mul.mir
  llvm/test/CodeGen/Mips/GlobalISel/legalizer/rem_and_div.mir
  llvm/test/CodeGen/Mips/GlobalISel/legalizer/sub.mir
  llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/add.ll
  llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/mul.ll
  llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/rem_and_div.ll
  llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/sub.ll
  llvm/test/CodeGen/X86/GlobalISel/add-ext.ll
  llvm/test/CodeGen/X86/GlobalISel/gep.ll
  llvm/test/CodeGen/X86/GlobalISel/irtranslator-callingconv.ll
  llvm/test/CodeGen/X86/GlobalISel/legalize-memop-scalar-32.mir
  llvm/test/CodeGen/X86/GlobalISel/x86_64-irtranslator-struct-return.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60580.194748.patch
Type: text/x-patch
Size: 239990 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190411/0ddaa2c6/attachment-0001.bin>


More information about the llvm-commits mailing list