Skip to content

FP/Int uops breakdown is missing from llvm-exegesis uop decomposition on Zen2 #146389

Open
@TiborGY

Description

@TiborGY

Running exegesis uop decomposition on Zen2 yields only the Zn2AGU and Zn2Divider, and what I assume is the total number of uops across all execution units, including the FPU and the Int units.

Assuming the HW is capable of measuring these things, exegesis should implement measuring Int and FP uops on Zen2.

./llvm-exegesis -mode=uops -opcode-name=VEXTRACTF128rri -mcpu=znver2 --benchmark-repeat-count=100000
---
mode:            uops
key:
  instructions:
    - 'VEXTRACTF128rri XMM4 YMM5 i_0x1'
  config:          ''
  register_initial_values:
    - 'YMM5=0x0'
cpu_name:        znver2
llvm_triple:     x86_64-unknown-linux-gnu
min_instructions: 10000
measurements:
  - { key: Zn2AGU, value: 0.0069, per_snippet_value: 0.0069, validation_counters: {} }
  - { key: Zn2Divider, value: 0, per_snippet_value: 0, validation_counters: {} }
  - { key: NumMicroOps, value: 1.0148, per_snippet_value: 1.0148, validation_counters: {} }
error:           ''
info:            instruction has no tied variables, avoiding Read-After-Write issue, picking random def and use registers not aliasing each other, for uses, reusing the same register for all positions
assembled_snippet: 4883EC20C7042400000000C744240400000000C744240800000000C744240C00000000C744241000000000C744241400000000C744241800000000C744241C00000000C5FE6F2C244883C420C4E37D19EC01C4E37D19EC01C4E37D19EC01C4E37D19EC01C3
...

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