[PATCH] D65948: [MCA] Add flag -show-encoding to llvm-mca.

Andrea Di Biagio via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 8 06:28:31 PDT 2019


andreadb created this revision.
andreadb added reviewers: RKSimon, lebedev.ri, courbet, gchatelet, ondrasej.
Herald added subscribers: gbedwell, tschuett, mgorny.

Flag `-show-encoding` enables the printing of instruction encodings as part of the the instruction info view.

Example (with flags `-mtriple=x86_64--  -mcpu=btver2`):

  Instruction Info:
  [1]: #uOps
  [2]: Latency
  [3]: RThroughput
  [4]: MayLoad
  [5]: MayStore
  [6]: HasSideEffects (U)
  [7]: Encoding Size
  
  [1]    [2]    [3]    [4]    [5]    [6]    [7]    Encodings:                    Instructions:
   1      2     1.00                         4     c5 f0 59 d0                   vmulps   %xmm0, %xmm1, %xmm2
   1      4     1.00                         4     c5 eb 7c da                   vhaddps  %xmm2, %xmm2, %xmm3
   1      4     1.00                         4     c5 e3 7c e3                   vhaddps  %xmm3, %xmm3, %xmm4

In this example, column `Encoding Size` is the size in bytes of the instruction encoding.
Column `Encodings` reports the actual instruction encodings as byte sequences in hex (objdump style).

The computation of encodings is done by a utility class named mca::CodeEmitter.

In future, I plan to expose the CodeEmitter to the instruction builder, so that information about instruction encoding sizes can be used by the simulator. That would be a first step towards simulating the throughput from the decoders in the hardware frontend.


https://reviews.llvm.org/D65948

Files:
  include/llvm/MCA/CodeEmitter.h
  lib/MCA/CMakeLists.txt
  lib/MCA/CodeEmitter.cpp
  test/tools/llvm-mca/X86/show-encoding.s
  tools/llvm-mca/Views/InstructionInfoView.cpp
  tools/llvm-mca/Views/InstructionInfoView.h
  tools/llvm-mca/llvm-mca.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65948.214134.patch
Type: text/x-patch
Size: 16464 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190808/979181d9/attachment.bin>


More information about the llvm-commits mailing list