[PATCH] D120177: [BOLT] CMOVConversion pass

Amir Ayupov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 18 23:27:53 PST 2022


Amir created this revision.
Herald added subscribers: ayermolo, pengfei, mgorny.
Herald added a reviewer: rafauler.
Herald added a reviewer: maksfb.
Amir requested review of this revision.
Herald added subscribers: llvm-commits, yota9.
Herald added a project: LLVM.

Convert simple hammocks into cmov based on misprediction rate.

Test Plan:

  - Assembly test: `cmov-conversion.s`
  - Testing on a binary:
1. `arc patch D119777` ([X86] Introduce x86-cmov-converter-force-all)
2. Bootstrap clang with `-x86-cmov-converter-force-all` and `-Wl,--emit-relocs` (Release build)
3. Collect perf.data:

  clang++ <opts> bolt/lib/Core/BinaryFunction.cpp -E > bf.cpp
  perf record -e cycles:u -j any,u -- clang-15 bf.cpp -O2 -std=c++14 -c -o bf.o

4. Optimize clang-15 with and w/o -cmov-conversion:

  llvm-bolt clang-15 -p perf.data -o clang-15.bolt
  llvm-bolt clang-15 -p perf.data -cmov-conversion -o clang-15.bolt.cmovconv

5. Run perf experiment:
  - test: `clang-15.bolt.cmovconv`,
  - control: `clang-15.bolt`,
  - workload (clang options): `bf.cpp -O2 -std=c++14 -c -o bf.o`

Results:

  task-clock [delta: -360.21 ± 356.75, delta(%): -1.7760 ± 1.7589, p-value: 0.047951, balance: -6]
  instructions  [delta: 44061118 ± 13246382, delta(%): 0.0690 ± 0.0207, p-value: 0.000001, balance: 50]
  icache-misses [delta: -5534468 ± 2779620, delta(%): -0.4331 ± 0.2175, p-value: 0.028014, balance: -28]
  branch-misses [delta: -1624270 ± 1113244, delta(%): -0.3456 ± 0.2368, p-value: 0.030300, balance: -22]


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D120177

Files:
  bolt/include/bolt/Core/MCPlusBuilder.h
  bolt/include/bolt/Passes/CMOVConversion.h
  bolt/lib/Passes/CMOVConversion.cpp
  bolt/lib/Passes/CMakeLists.txt
  bolt/lib/Rewrite/BinaryPassManager.cpp
  bolt/lib/Target/X86/X86MCPlusBuilder.cpp
  bolt/test/X86/cmov-conversion.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D120177.410069.patch
Type: text/x-patch
Size: 36064 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220219/5c141134/attachment-0001.bin>


More information about the llvm-commits mailing list