Currently native clusterization simply groups all benchmarks by the opcode of key instruction, but that is suboptimal in certain cases, e.g. where we can already tell that the particular instructions already resolve into different sched classes.
50 lines
1.8 KiB
Plaintext
50 lines
1.8 KiB
Plaintext
# RUN: llvm-exegesis -mcpu=znver3 -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-clustering-epsilon=0.1 -analysis-inconsistency-epsilon=0.1 -analysis-numpoints=1 -analysis-clustering=naive | FileCheck -check-prefixes=CHECK-CLUSTERS %s
|
|
|
|
# Naive clusterization mainly groups by instruction opcode,
|
|
# but it should also partition the benchmarks of the same opcode
|
|
# by the sched class. For example, a regular `xor`, and same-operand `xor`
|
|
# may have different characteristics, and it will be confusing/misleading
|
|
# to group them.
|
|
|
|
# CHECK-CLUSTERS: {{^}}cluster_id,opcode_name,config,sched_class,latency{{$}}
|
|
# CHECK-CLUSTERS-NEXT: {{^}}0,
|
|
# CHECK-CLUSTERS-SAME: ,1.00{{$}}
|
|
# CHECK-CLUSTERS: {{^}}1,
|
|
# CHECK-CLUSTERS-SAME: ,0.20{{$}}
|
|
|
|
---
|
|
mode: latency
|
|
key:
|
|
instructions:
|
|
- 'XOR32rr ECX ECX EAX'
|
|
config: ''
|
|
register_initial_values:
|
|
- 'ECX=0x0'
|
|
- 'EAX=0x0'
|
|
cpu_name: znver3
|
|
llvm_triple: x86_64-unknown-linux-gnu
|
|
num_repetitions: 1000000
|
|
measurements:
|
|
- { key: latency, value: 1.00017, per_snippet_value: 1.00017 }
|
|
error: ''
|
|
info: Repeating a single implicitly serial instruction
|
|
assembled_snippet: B900000000B80000000031C131C131C131C1C3B900000000B80000000049B8020000000000000031C131C14983C0FF75F6C3
|
|
...
|
|
---
|
|
mode: latency
|
|
key:
|
|
instructions:
|
|
- 'XOR32rr EDI EDI EDI'
|
|
config: ''
|
|
register_initial_values:
|
|
- 'EDI=0x0'
|
|
cpu_name: znver3
|
|
llvm_triple: x86_64-unknown-linux-gnu
|
|
num_repetitions: 1000000
|
|
measurements:
|
|
- { key: latency, value: 0.198311, per_snippet_value: 0.198311 }
|
|
error: ''
|
|
info: Repeating a single implicitly serial instruction
|
|
assembled_snippet: BF0000000031FF31FF31FF31FFC3BF0000000049B8020000000000000031FF31FF4983C0FF75F6C3
|
|
...
|