Skip to content

[llvm-exegesis] Analysis reporting bad match even with exactly the same capture #84776

Open
@RKSimon

Description

@RKSimon

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).

---
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
...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions