# 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
+# 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
+# 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
+# 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
+# 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
+# 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
_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
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:
num_lines_of_prefix = 0
previous_prefix = prefix
+ written_prefixes.add(prefix)
output.append(
'{} {}{}{} {}'.format(COMMENT_CHAR,
prefix,
end_prefix = '-NEXT:'
output.append('')
+ return written_prefixes
def _write_output(test_path, input_lines, prefix_list, block_infos, # noqa
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:
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)