[llvm] r343332 - [utils] Stricter checking from update_mca_test_checks.py

Greg Bedwell via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 28 08:39:09 PDT 2018


Author: gbedwell
Date: Fri Sep 28 08:39:09 2018
New Revision: 343332

URL: http://llvm.org/viewvc/llvm-project?rev=343332&view=rev
Log:
[utils] Stricter checking from update_mca_test_checks.py

If any prefixes have been specified on the RUN lines that do not end up
ever actually getting printed, raise an Error. This is either an
indication that the run lines just need cleaning up, or that something
is more fundamentally wrong with the test.

Also raise an Error if there are any blocks which cannot be checked
because they are not uniquely covered by a prefix.

Fixed up a couple of tests where the extra checking flagged up issues.

Differential Revision: https://reviews.llvm.org/D48276

Modified:
    llvm/trunk/test/tools/llvm-mca/X86/option-all-views-2.s
    llvm/trunk/test/tools/llvm-mca/X86/register-file-statistics.s
    llvm/trunk/utils/update_mca_test_checks.py

Modified: llvm/trunk/test/tools/llvm-mca/X86/option-all-views-2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/option-all-views-2.s?rev=343332&r1=343331&r2=343332&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/option-all-views-2.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/option-all-views-2.s Fri Sep 28 08:39:09 2018
@@ -3,7 +3,7 @@
 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views -resource-pressure       < %s | FileCheck %s -check-prefix=ALL -check-prefix=FULLREPORT
 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -resource-pressure -all-views       < %s | FileCheck %s -check-prefix=ALL -check-prefix=FULLREPORT
 # RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -resource-pressure=false -all-views < %s | FileCheck %s -check-prefix=ALL -check-prefix=FULLREPORT
-# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL -check-prefix=NORPV
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -all-views -resource-pressure=false < %s | FileCheck %s -check-prefix=ALL
 
 add %eax, %eax
 

Modified: llvm/trunk/test/tools/llvm-mca/X86/register-file-statistics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/register-file-statistics.s?rev=343332&r1=343331&r2=343332&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/register-file-statistics.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/register-file-statistics.s Fri Sep 28 08:39:09 2018
@@ -1,37 +1,37 @@
 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
 # RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,BTVER2 %s
 # RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=znver1 -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,ZNVER1 %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,SNB %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=ivybridge -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,IVB %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=haswell -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,HSW %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=broadwell -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,BDW %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=knl -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,KNL %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=skylake -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,SKX %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=skylake-avx512 -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,SKX-AVX512 %s
-# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=slm -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL,SLM %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=sandybridge -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=ivybridge -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=haswell -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=broadwell -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=knl -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=skylake -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=skylake-avx512 -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
+# RUN: llvm-mca %s -mtriple=x86_64-unknown-unknown -mcpu=slm -iterations=1 -all-stats=false -all-views=false -register-file-stats < %s | FileCheck --check-prefixes=ALL %s
 
 xor %eax, %ebx
 
-# ALL:             Register File statistics:
-# ALL-NEXT:        Total number of mappings created:    2
-# ALL-NEXT:        Max number of mappings used:         2
-
-# BTVER2:          *  Register File #1 -- JFpuPRF:
-# BTVER2-NEXT:        Number of physical registers:     72
-# BTVER2-NEXT:        Total number of mappings created: 0
-# BTVER2-NEXT:        Max number of mappings used:      0
-
-# ZNVER1:          *  Register File #1 -- ZnFpuPRF:
-# ZNVER1-NEXT:        Number of physical registers:     160
-# ZNVER1-NEXT:        Total number of mappings created: 0
-# ZNVER1-NEXT:        Max number of mappings used:      0
-
-# BTVER2:          *  Register File #2 -- JIntegerPRF:
-# BTVER2-NEXT:        Number of physical registers:     64
-# BTVER2-NEXT:        Total number of mappings created: 2
-# BTVER2-NEXT:        Max number of mappings used:      2
-
-# ZNVER1:          *  Register File #2 -- ZnIntegerPRF:
-# ZNVER1-NEXT:        Number of physical registers:     168
-# ZNVER1-NEXT:        Total number of mappings created: 2
-# ZNVER1-NEXT:        Max number of mappings used:      2
+# ALL:         Register File statistics:
+# ALL-NEXT:    Total number of mappings created:    2
+# ALL-NEXT:    Max number of mappings used:         2
+
+# BTVER2:      *  Register File #1 -- JFpuPRF:
+# BTVER2-NEXT:    Number of physical registers:     72
+# BTVER2-NEXT:    Total number of mappings created: 0
+# BTVER2-NEXT:    Max number of mappings used:      0
+
+# ZNVER1:      *  Register File #1 -- ZnFpuPRF:
+# ZNVER1-NEXT:    Number of physical registers:     160
+# ZNVER1-NEXT:    Total number of mappings created: 0
+# ZNVER1-NEXT:    Max number of mappings used:      0
+
+# BTVER2:      *  Register File #2 -- JIntegerPRF:
+# BTVER2-NEXT:    Number of physical registers:     64
+# BTVER2-NEXT:    Total number of mappings created: 2
+# BTVER2-NEXT:    Max number of mappings used:      2
+
+# ZNVER1:      *  Register File #2 -- ZnIntegerPRF:
+# ZNVER1-NEXT:    Number of physical registers:     168
+# ZNVER1-NEXT:    Total number of mappings created: 2
+# ZNVER1-NEXT:    Max number of mappings used:      2

Modified: llvm/trunk/utils/update_mca_test_checks.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/update_mca_test_checks.py?rev=343332&r1=343331&r2=343332&view=diff
==============================================================================
--- llvm/trunk/utils/update_mca_test_checks.py (original)
+++ llvm/trunk/utils/update_mca_test_checks.py Fri Sep 28 08:39:09 2018
@@ -388,6 +388,9 @@ def _get_block_infos(run_infos, test_pat
             _warn('Multiple prefixes generating same output: {} '
                   '(discarding {})'.format(','.join(s), ','.join(s[1:])))
 
+      if block_text and not current_set:
+        raise Error(
+          'block not captured by existing prefixes:\n\n{}'.format(block_text))
       block_infos[block_num][block_text] = sorted(list(current_set))
 
     # If we have multiple block_texts, try to break them down further to avoid
@@ -408,10 +411,12 @@ def _get_block_infos(run_infos, test_pat
 
 def _write_block(output, block, not_prefix_set, common_prefix, prefix_pad):
   """ Write an individual block, with correct padding on the prefixes.
+      Returns a set of all of the prefixes that it has written.
   """
   end_prefix = ':     '
   previous_prefix = None
   num_lines_of_prefix = 0
+  written_prefixes = set()
 
   for prefix, line in block:
     if prefix in not_prefix_set:
@@ -431,6 +436,7 @@ def _write_block(output, block, not_pref
       num_lines_of_prefix = 0
       previous_prefix = prefix
 
+    written_prefixes.add(prefix)
     output.append(
         '{} {}{}{} {}'.format(COMMENT_CHAR,
                               prefix,
@@ -440,6 +446,7 @@ def _write_block(output, block, not_pref
     end_prefix = '-NEXT:'
 
   output.append('')
+  return written_prefixes
 
 
 def _write_output(test_path, input_lines, prefix_list, block_infos,  # noqa
@@ -483,6 +490,7 @@ def _write_output(test_path, input_lines
     output_lines.append('')
 
   output_check_lines = []
+  used_prefixes = set()
   for block_num in range(len(block_infos)):
     for block_text in sorted(block_infos[block_num]):
       if not block_text:
@@ -490,22 +498,26 @@ def _write_output(test_path, input_lines
 
       if type(block_infos[block_num]) is list:
         # The block is of the type output from _break_down_block().
-        _write_block(output_check_lines,
-                     block_infos[block_num],
-                     not_prefix_set,
-                     common_prefix,
-                     prefix_pad)
+        used_prefixes |= _write_block(output_check_lines,
+                                      block_infos[block_num],
+                                      not_prefix_set,
+                                      common_prefix,
+                                      prefix_pad)
         break
       elif block_infos[block_num][block_text]:
         # _break_down_block() was unable to do do anything so output the block
         # as-is.
         lines = block_text.split('\n')
         for prefix in block_infos[block_num][block_text]:
-          _write_block(output_check_lines,
-                       [(prefix, line) for line in lines],
-                       not_prefix_set,
-                       common_prefix,
-                       prefix_pad)
+          used_prefixes |= _write_block(output_check_lines,
+                                        [(prefix, line) for line in lines],
+                                        not_prefix_set,
+                                        common_prefix,
+                                        prefix_pad)
+
+  unused_prefixes = (prefix_set - not_prefix_set) - used_prefixes
+  if unused_prefixes:
+    raise Error('unused prefixes: {}'.format(sorted(unused_prefixes)))
 
   if output_check_lines:
     output_lines.insert(0, ADVERT)




More information about the llvm-commits mailing list