<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/81504>81504</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            LLVM MCA does not match uops.info/Agner measurements for Icelake add/mul
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          SeeSpring
      </td>
    </tr>
</table>

<pre>
    According to uops.info and Agner these instructions all have a throughput of 1 on Icelake and run on port 0
```
vaddps  %zmm0, %zmm1, %zmm2
vmulps  %zmm0, %zmm1, %zmm2
```
llvm-mca claims they have a RThroughput of 0.50 and p05
[Godbolt of llvm-mca](https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:analysis,source:'.att_syntax+%0Avaddps%09%25zmm0,+%25zmm1,+%25zmm2%0Avaddps%09%25zmm0,+%25zmm1,+%25zmm2%0Avmulps%09%25zmm0,+%25zmm1,+%25zmm2%0Avmulps%09%25zmm0,+%25zmm1,+%25zmm2%0A'),l:'5',n:'0',o:'Analysis+source+%231',t:'0')),l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:llvm-mcatrunk,filters:(b:'0',binary:'1',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:2,lang:analysis,libs:!(),options:'-mcpu%3Dicelake-server',overrides:!(),source:1),l:'5',n:'0',o:'+llvm-mca+(trunk)+(Editor+%231)',t:'0')),header:(),l:'4',m:100,n:'0',o:'',s:0,t:'0')),l:'2',m:100,n:'0',o:'',t:'0')),version:4)

<details>
<summary>Version</summary>

```
LLVM (http://llvm.org/):
  LLVM version 19.0.0git
  Optimized build.
 Default target: x86_64-unknown-linux-gnu
  Host CPU: cascadelake

 Registered Targets:
    aarch64     - AArch64 (little endian)
 aarch64_32  - AArch64 (little endian ILP32)
    aarch64_be  - AArch64 (big endian)
    amdgcn      - AMD GCN GPUs
    arm         - ARM
 arm64       - ARM64 (little endian)
    arm64_32    - ARM64 (little endian ILP32)
    armeb       - ARM (big endian)
    avr         - Atmel AVR Microcontroller
    bpf         - BPF (host endian)
    bpfeb       - BPF (big endian)
    bpfel       - BPF (little endian)
    dxil - DirectX Intermediate Language
    hexagon     - Hexagon
    lanai - Lanai
    loongarch32 - 32-bit LoongArch
    loongarch64 - 64-bit LoongArch
    m68k        - Motorola 68000 family
    mips        - MIPS (32-bit big endian)
    mips64      - MIPS (64-bit big endian)
 mips64el    - MIPS (64-bit little endian)
    mipsel      - MIPS (32-bit little endian)
    msp430      - MSP430 [experimental]
    nvptx - NVIDIA PTX 32-bit
    nvptx64     - NVIDIA PTX 64-bit
    ppc32 - PowerPC 32
    ppc32le     - PowerPC 32 LE
    ppc64       - PowerPC 64
    ppc64le     - PowerPC 64 LE
    r600        - AMD GPUs HD2XXX-HD6XXX
    riscv32     - 32-bit RISC-V
    riscv64     - 64-bit RISC-V
    sparc       - Sparc
    sparcel     - Sparc LE
 sparcv9     - Sparc V9
    spirv       - SPIR-V Logical
    spirv32 - SPIR-V 32-bit
    spirv64     - SPIR-V 64-bit
    systemz     - SystemZ
    thumb       - Thumb
    thumbeb     - Thumb (big endian)
    ve          - VE
    wasm32      - WebAssembly 32-bit
 wasm64      - WebAssembly 64-bit
    x86         - 32-bit X86: Pentium-Pro and above
    x86-64      - 64-bit X86: EM64T and AMD64
 xcore       - XCore
Compiler returned: 0
```
</details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WF1v4jwW_jXmxgoKzgdwwQWFdqZS-w5qOyzam5GTHILfcezIdijMr185MflgaPXurLRV1eJznvP4fPnghGrNcgGwQNEditYjWpmDVItXgNdSMZGPEpmdF8s0lSpjIsdG4kqWeszEXmIqMrzMBShsDqABM6GNqlLDpNCYco4P9AiYYnNQssoPZWWw3OMJlgI_psDpT6gpVCWsqJTKYB_5a-QvUey733p5pFlWauTPEYl-FYWPyAo3HyfdR-KwRcX_KfZqG86PhVekFKecskLbqM6XGF7eBkH448ivnS_9yHFFd19klkhe6y9UKFojMjsYU2oULBF5QOQhb2BjqfJaEOS1aoLIDJHZx4sDCpapzOA-Y0YqRFas1s72jIOgBdSr6QSRKSKrvRTmNaXcSiehE3zXsDk1ML-B_W3ViKw4FXYvKig_a6YRWWlZqdRxjqkxP_RZGHpC5A6RqC0JiepEt6lu1G26e0vyP5k1Rf0_mdWpmdusNOFHTa7EIHOyWS3bjN25jDVsgauD6RvNB7ThJ7TNwvaMf4Nkdbs1ipJx6DVGKwna1jaqEj9tNzBuQDU9OUsGHiRMUHUeNFMj-pb8DakZKFJZFCDMN8HPA44MkipfUc71AJ5BQUXOYYhlClLDjqAHYjhBWplhUzNhgA9QnCWKqvNKZkNSo1jRN7VJ23Oa6y2D928liD89LOTmYeEs0b162N1kWc_BhsAr0rJCJArWrBl8ngZ1tLWqa34EpVgG1xTtEZz843ZE5K4dPbYRZ67g82Z1GR1ti84_7tID0KzundafYd_a_E58_886uEdH_gu6WzRHUJpJaxRaQTOMm7_BKgNDme3C-1akq6KoG_x-e7FcIfLQiQcUw2-Ip6ftM3YDvZ3nNuHtMJ9bcY3FuEY79_BkPvbHfs7MRfutNKxgvyDDScV4NnbyNexpxQ02VOVg48WnWfwjDr1K_BTyXXicierk5aK6EH2V2uDV5rvFplSnNKtbrB8GfoGcaQMKMvxWE-uenxhTqtJDHNqP2MPLZbNCZMaZMRwwiIxR0ab3gv8RkM_w-PFpE5DOqtvoRwJXhgnLf9vF4ossTwW-OPa8xl9Wf-Evm--6h1EFvvx4ePnyfHFSFS4kJ_80pIbIxfSxwa2YVAFJf5_P4jmqvq-mAI6X2xf8zFIlUymMktxO7NYgKfc9g7vNQ91-tuI32JNy3_PEgT_wxGL5Nfbj3GQnxrGH1_Ww3uFHYUAVkDFqAD9RkVc0hw59gBPNpXDkX5tVp-ZUUIY9a0hZTyylyG2DBAR7OCBewgx-skLbJzdwcYg9HIcf4Yp49rPL3bM0UklOcTzzfR_vacH4uQdmpe6BHzevNiHOiQ9yaG0uLdbZOIdu2TQGTd5_M_g4-dbsUqzffPvETJdh4Ldmrxu7QtEdnEpQzH5xU24vqK2BOJbmhD381_Zx_bjEm7edq8IVpJ0UPWATRAcsy7Qu40a-g9qscECudBwcSYfAT_cDUO_4XkBxeIX4jSYOBzQq9v3eibMTZPNd469rstvtvK_reLfb9dBMp8dmAnQt-PL4uvK2V6A2B6561yBdUpW2-77a1ZXSVdQpO6dr5XE-UG7nfWOmjh3z5vHF2-InmbOU8itUXQGHuK5kDWijcKDrKuqzNlD8uoDq1b87tTlURTdw3uzqSunmkVN-Mo-OgHuDbtur4DvVhSsJ9vC_IFlqDUXCz8OQLKw7jH3YdVCnWdzbyhV5N4vtF-gGhGFV4W1U83xLE3mEganXbeJK70zvn-PwrXkofl63fXpKpYJ2s91KKke3crdzrMBUSkBmOW4__zY3lO4uM8oWQTYP5nQEi8nUn05jP_LJ6LCYxvOZH4TTyQSCMCEkDKcZDdIsSmiapvNkxBbEJ6FPJmQyjSLfH09moe_vs3k6pwnE8xSFPhSU8fHlVjNiWlewmE0iPxxxmgDX9csCQgS841qJCEHReqQW9dUzqXKNQp8zbXTHYpjhsKhvRM-rJc4kaCykwQU16aF7p4DIQ_NGoQCqKwV2SGm8l6p7Y5BliDwUFR9Vii-unqyZOVTJOJWFu5a5f16pZP3sQh5qhzUiD3VA_wkAAP__k_yslA">