[llvm] r329726 - [llvm-mca] add example workflow for source code

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 10 10:49:46 PDT 2018


Author: spatel
Date: Tue Apr 10 10:49:45 2018
New Revision: 329726

URL: http://llvm.org/viewvc/llvm-project?rev=329726&view=rev
Log:
[llvm-mca] add example workflow for source code
  
This is copied from Andrea's text in PR36875:
https://bugs.llvm.org/show_bug.cgi?id=36875

As noted there, this is a hack...but it's a good one!
It's important to show potential workflows up-front
with examples, so customers can copy and experiment
with them.


Modified:
    llvm/trunk/docs/CommandGuide/llvm-mca.rst

Modified: llvm/trunk/docs/CommandGuide/llvm-mca.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CommandGuide/llvm-mca.rst?rev=329726&r1=329725&r2=329726&view=diff
==============================================================================
--- llvm/trunk/docs/CommandGuide/llvm-mca.rst (original)
+++ llvm/trunk/docs/CommandGuide/llvm-mca.rst Tue Apr 10 10:49:45 2018
@@ -36,6 +36,26 @@ substring ``LLVM-MCA-END`` marks the end
     ...
   # LLVM-MCA-END
 
+Inline assembly directives may also be used from source code to annotate the 
+assembly text:
+
+.. code-block:: c++
+
+int foo(int a, int b) {
+  __asm volatile("# LLVM-MCA-BEGIN foo");
+  a += 42;
+  __asm volatile("# LLVM-MCA-END");
+  a *= b;
+  return a;
+}
+
+So for example, you can compile code with clang, output assembly, and pipe it
+directly into llvm-mca for analysis:
+
+.. code-block:: bash
+
+$ clang foo.cpp -O2 -target x86_64-unknown-unknown -S -o - | llvm-mca -mcpu=btver2
+
 Multiple regions can be specified provided that they do not overlap.  A code
 region can have an optional description. If no user defined region is specified,
 then :program:`llvm-mca` assumes a default region which contains every




More information about the llvm-commits mailing list