[PATCH] D48225: [llvm-mca][X86] Teach how to identify register writes that implicitly clear the upper portion of a super-register.

Andrea Di Biagio via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 18 07:34:08 PDT 2018


andreadb updated this revision to Diff 151713.
andreadb marked 10 inline comments as done.
andreadb added a comment.

Patch updated.

Addressed review comments.
We now use an APInt instead of a BitVector to keep track of writes that update super-register(s).

A few XOP and AVX512 tests have been added at revision 334945 (http://llvm.org/viewvc/llvm-project?view=revision&revision=334945).

This new patch shows the updated analysis. Now the tool correctly kills the dependencies with the zeroed portions of YMM/ZMM registers. The new IPC for those tests looks much more realistic now. For example, avx512-super-registers-2.s goes from IPC 0.29 to IPC 1.89, with a teoretical maximum IPC of 2.00 (computed as NumInstructions / Block RThroughput = 6 / 3).

Please let me know if okay to commit.

Thanks,
Andrea


https://reviews.llvm.org/D48225

Files:
  include/llvm/MC/MCInstrAnalysis.h
  lib/MC/MCInstrAnalysis.cpp
  lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
  test/tools/llvm-mca/X86/BtVer2/clear-super-register-1.s
  test/tools/llvm-mca/X86/BtVer2/clear-super-register-2.s
  test/tools/llvm-mca/X86/Generic/avx512-super-registers-1.s
  test/tools/llvm-mca/X86/Generic/avx512-super-registers-2.s
  test/tools/llvm-mca/X86/Generic/avx512-super-registers-3.s
  test/tools/llvm-mca/X86/Generic/xop-super-registers-1.s
  test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s
  tools/llvm-mca/InstrBuilder.cpp
  tools/llvm-mca/InstrBuilder.h
  tools/llvm-mca/Instruction.h
  tools/llvm-mca/RegisterFile.cpp
  tools/llvm-mca/llvm-mca.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48225.151713.patch
Type: text/x-patch
Size: 50468 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180618/59ddc061/attachment.bin>


More information about the llvm-commits mailing list