[LNT] r303853 - [lnt][profile] Add support for X86-64 CFG view

Elad Cohen via llvm-commits llvm-commits at lists.llvm.org
Thu May 25 06:12:58 PDT 2017


Author: eladcohen
Date: Thu May 25 08:12:58 2017
New Revision: 303853

URL: http://llvm.org/viewvc/llvm-project?rev=303853&view=rev
Log:
[lnt][profile] Add support for X86-64 CFG view

Differential revision: https://reviews.llvm.org/D33544


Modified:
    lnt/trunk/lnt/server/ui/static/lnt_profile.js
    lnt/trunk/lnt/server/ui/templates/v4_profile.html

Modified: lnt/trunk/lnt/server/ui/static/lnt_profile.js
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/static/lnt_profile.js?rev=303853&r1=303852&r2=303853&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/static/lnt_profile.js (original)
+++ lnt/trunk/lnt/server/ui/static/lnt_profile.js Thu May 25 08:12:58 2017
@@ -102,6 +102,21 @@ InstructionSetParser.prototype = {
         // TODO: add all control-flow-changing instructions.
     ],
 
+    X86_64JumpTargetRegexps: [
+        // (regexp, noFallThru?)
+        // branch conditional:
+        [new RegExp("^\\s*j(?:(?:a)|(?:ae)|(?:b)|(?:be)|(?:c)|(?:ecxz)|(?:rcxz)"
+                    "|(?:e)|(?:g)|(?:ge)|(?:l)|(?:le)|(?:na)|(?:nae)|(?:nb)"
+                    "|(?:nbe)|(?:nc)|(?:ne)|(?:ng)|(?:nge)|(?:nl)|(?:nle)"
+                    "|(?:no)|(?:np)|(?:ns)|(?:nz)|(?:o)|(?:p)|(?:pe)|(?:po)"
+                    "|(?:s)|(?:z))?\\s+([^\\s]+)"), false],
+        [new RegExp("^\\s*loop(?:(?:e)|(?:ne)|(?:nz)|(?:z))?\\s+([^\\s]+)"), false],
+        // branch unconditional:
+        [new RegExp("^\\s*jmp\\s+([^\\s]+)"), true],
+        // ret
+        [new RegExp("^\\s*retq"), true],
+    ],
+
     getJumpTargets: function(instruction, nextInstruction, cfg) {
         for(var i=0; i<this.jumpTargetRegexps.length; ++i) {
             var regexp = this.jumpTargetRegexps[i][0];
@@ -497,6 +512,10 @@ Profile.prototype = {
         else if (this.instructionSet == 'aarch32t32')
             instructionParser = new InstructionSetParser(
                 InstructionSetParser.prototype.AArch32T32JumpTargetRegexps);
+        else if (this.instructionSet == 'X86-64')
+            instructionParser = new InstructionSetParser(
+                InstructionSetParser.prototype.X86_64JumpTargetRegexps);
+
         else {
             // Do not try to continue if we don't have support for
             // the requested instruction set.

Modified: lnt/trunk/lnt/server/ui/templates/v4_profile.html
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/templates/v4_profile.html?rev=303853&r1=303852&r2=303853&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/templates/v4_profile.html (original)
+++ lnt/trunk/lnt/server/ui/templates/v4_profile.html Thu May 25 08:12:58 2017
@@ -93,6 +93,7 @@
         <option value="cfg-aarch64">Control-Flow Graph (AArch64)</option>
         <option value="cfg-aarch32t32">Control-Flow Graph (AArch32-T32)</option>
         <option value="cfg-aarch32a32">Control-Flow Graph (AArch32-A32)</option>
+        <option value="cfg-X86-64">Control-Flow Graph (X86-64)</option>
       </select>
     </div>
     <div class="span4">




More information about the llvm-commits mailing list