<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/84776>84776</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[llvm-exegesis] Analysis reporting bad match even with exactly the same capture
</td>
</tr>
<tr>
<th>Labels</th>
<td>
tools:llvm-exegesis
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
RKSimon
</td>
</tr>
</table>
<pre>
Analysis mode reports "Sched Class PREFETCHT0_PREFETCHT1_PREFETCHT2 contains instructions whose performance characteristics do not match that of LLVM" when we have multiple copies of the same capture.
Oddly this take 3 instance of the same capture to occur - at 1 / 2 it seems to be happier - I'm seeing this with other captures as well, I just chose PREFETCH as it only uses ZnAGU (a resource group for ZnAGU0/1 which I suspect is relevant).
```yaml
---
mode: uops
key:
instructions:
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x0 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x40 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x80 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0xc0 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x100 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x140 %noreg'
config: ''
register_initial_values: []
cpu_name: znver1
llvm_triple: x86_64-unknown-linux-gnu
min_instructions: 10000
measurements:
- { key: ZnFPU0, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU1, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU2, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU3, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnAGU, value: 1.0044, per_snippet_value: 6.02519, validation_counters: {} }
- { key: ZnDivider, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: NumMicroOps, value: 1.0065, per_snippet_value: 6.03779, validation_counters: {} }
error: ''
info: instruction is parallel, repeating a random one.
assembled_snippet: 0F180F0F184F400F188F800000000F188FC00000000F188F000100000F188F400100000F180F0F184F400F188F800000000F188FC00000000F188F000100000F188F400100000F180F0F184F400F188F800000000F188FC00000000F188F000100000F188F400100000F180F0F184F400F188F800000000F188FC00000000F188F000100000F188F40010000C3
...
---
mode: uops
key:
instructions:
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x0 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x40 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x80 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0xc0 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x100 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x140 %noreg'
config: ''
register_initial_values: []
cpu_name: znver1
llvm_triple: x86_64-unknown-linux-gnu
min_instructions: 10000
measurements:
- { key: ZnFPU0, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU1, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU2, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU3, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnAGU, value: 1.0039, per_snippet_value: 6.0222, validation_counters: {} }
- { key: ZnDivider, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: NumMicroOps, value: 1.0065, per_snippet_value: 6.03779, validation_counters: {} }
error: ''
info: instruction is parallel, repeating a random one.
assembled_snippet: 0F18170F1857400F1897800000000F1897C00000000F1897000100000F1897400100000F18170F1857400F1897800000000F1897C00000000F1897000100000F1897400100000F18170F1857400F1897800000000F1897C00000000F1897000100000F1897400100000F18170F1857400F1897800000000F1897C00000000F1897000100000F189740010000C3
...
---
mode: uops
key:
instructions:
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x0 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x40 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x80 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0xc0 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x100 %noreg'
- 'PREFETCHT0 RDI i_0x1 %noreg i_0x140 %noreg'
config: ''
register_initial_values: []
cpu_name: znver1
llvm_triple: x86_64-unknown-linux-gnu
min_instructions: 10000
measurements:
- { key: ZnFPU0, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU1, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU2, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnFPU3, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: ZnAGU, value: 1.004, per_snippet_value: 6.0228, validation_counters: {} }
- { key: ZnDivider, value: 0, per_snippet_value: 0, validation_counters: {} }
- { key: NumMicroOps, value: 1.0065, per_snippet_value: 6.03779, validation_counters: {} }
error: ''
info: instruction is parallel, repeating a random one.
assembled_snippet: 0F181F0F185F400F189F800000000F189FC00000000F189F000100000F189F400100000F181F0F185F400F189F800000000F189FC00000000F189F000100000F189F400100000F181F0F185F400F189F800000000F189FC00000000F189F000100000F189F400100000F181F0F185F400F189F800000000F189FC00000000F189F000100000F189F40010000C3
...
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsmV2P26wSgH8NuRklwvgrvsjFNql7Vqc9rfpxLnoTETyJaTFYgJPd99e_ws7uxm13pXbbarWKFTkeDzAMDDxizJ2TO424IOkLkq4mvPO1sYv3__0gG6MnG1NdLy40V9dOOmhMhWCxNdY7IIx9EDVWsFTcOXj3_mX58uPyPx_p-vYxuntkIIz2XGoHUjtvO-Gl0Q4OtXEILdqtsQ3XAkHU3HLh0UrnpXBQGdDGQ8O9qMHX3IPZwuvX_39DGINDjRoOCDXfIzSd8rJVCMK0El0o52sExxsEwVvfWZwRuiL0Yri_rSp1Db6WDjz_ihD3Xes78YOq4A0YIToLU-AeIiCsBAbSg0NsXFBvQkfaVmIoc0lY3gSd1LvByEH6Goyv0d606YA7OKBShC3hEr50zoPoR-Rm4EIB6cFodQ2dQwef9cWrT0DYnINFZzorEHbWdC1sjR20lLAygkMtRQ2X4DrXovAgHVhUuOfaE1aMBoJkdPhd80YNr6bT6fAQ5pzEF3BydaZ1g_IrXpP42MhoXu_eAsAUCMvv4gPery5BrulVGMJUG4u7XqS3ImH5T9dOHld9_rjq4nHVI_rI-j_2Xhi9lbvR7AXtbQGLO-k82rXU0kuu1nuuOgyTB8N2MJQTbbfWvDkNg3_0Hm00qJXaN2tvw8oLJa7m2TpLpp3-qs1BT5XU3dV0p7tjOEm9_iZQIKKU0qMauessNqj9aQxNgeQvYIg2-KzLdyHGl9B3N7zqpRbt2mnZtujXY82eK1nxYG8tTKc92sHH_AXJV0Dy1f12oj9h53sz7C-5E_8NOxevPo3MRDNKk-ReW9mMsjQqHmNxJfeyQvvnnftf17yRwpq3rfvOxSx9yMU4z3_GRbTW2PG-e7p0pd6ab3blk1UV9vqWW64U9mSx2CL3gUMcLNeVacDoGxZy57DZKKxuut0PURnNaRnuSZnQ8D8v5_R49dJyJFFKozspOZGeVyvLeBi02Wx2DyfvgeNTpOMZjf3KOyXiryDxARaG68zDX7Hz7IEYFw8CkbEnysMnjcPfzsAoD_c0H4hR5KfEKPLlSDolRpGfcud5tXJm4JmBZwaeGfgbDoUPI3B-RuBTQGB_aEqPh6ZidGgqRoemYnRoKkZHr-fVyncIvM2gTqpFXBVxwSe4iPKIRjnLs3RSL-LNJt5mNEuSOBPIq-08zTYV2yKjSRXH2UQuGGUJjaMoStOCpTPON1k-TxK2meM24jlJKDZcqlnYYGfG7ibSuQ4X8yTPs4niG1SuT-Mz5o1RIYhCySle4Q6ddIQxkq4mdtG_3XQ7RxKqpPPurkUvveq_BYxrpiu4_Qgw5P9DFG14dUzL4x71kN7GKy58n1UfZ88nnVWL2vu238JZSVi5k77uNjNhGsLKYO_4N22t-YLCE1b2DjrCyt7HfwMAAP__BcAE5Q">