diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2024-02-13 08:22:39 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2024-02-13 08:22:51 +0000 |
commit | 0e16950e741aee7ffec865c81596e1411471475e (patch) | |
tree | beb81c02e3a32ebdacd0f198b74623da6022a690 /llvm/lib | |
parent | d57515bd107bc76df5a042ffee2b7dc6125ffef1 (diff) | |
download | llvm-0e16950e741aee7ffec865c81596e1411471475e.zip llvm-0e16950e741aee7ffec865c81596e1411471475e.tar.gz llvm-0e16950e741aee7ffec865c81596e1411471475e.tar.bz2 |
[X86] IceLakeServer - ZMM FADD/FMUL can only use Port0
Fix discrepancy from when this was forked from the SkylakeServer model
This also fixes VRANGEPS/VRANGEPD instructions which typically match FADD characteristics
Confirmed with Agner + uops.info
Fixes #81504
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86SchedIceLake.td | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86SchedIceLake.td b/llvm/lib/Target/X86/X86SchedIceLake.td index 2c660fa..3144327 100644 --- a/llvm/lib/Target/X86/X86SchedIceLake.td +++ b/llvm/lib/Target/X86/X86SchedIceLake.td @@ -257,11 +257,11 @@ defm : X86WriteRes<WriteEMMS, [ICXPort05,ICXPort0156], 10, [9,1], 10>; defm : ICXWriteResPair<WriteFAdd, [ICXPort01], 4, [1], 1, 5>; // Floating point add/sub. defm : ICXWriteResPair<WriteFAddX, [ICXPort01], 4, [1], 1, 6>; defm : ICXWriteResPair<WriteFAddY, [ICXPort01], 4, [1], 1, 7>; -defm : ICXWriteResPair<WriteFAddZ, [ICXPort05], 4, [1], 1, 7>; +defm : ICXWriteResPair<WriteFAddZ, [ICXPort0], 4, [1], 1, 7>; defm : ICXWriteResPair<WriteFAdd64, [ICXPort01], 4, [1], 1, 5>; // Floating point double add/sub. defm : ICXWriteResPair<WriteFAdd64X, [ICXPort01], 4, [1], 1, 6>; defm : ICXWriteResPair<WriteFAdd64Y, [ICXPort01], 4, [1], 1, 7>; -defm : ICXWriteResPair<WriteFAdd64Z, [ICXPort05], 4, [1], 1, 7>; +defm : ICXWriteResPair<WriteFAdd64Z, [ICXPort0], 4, [1], 1, 7>; defm : ICXWriteResPair<WriteFCmp, [ICXPort01], 4, [1], 1, 5>; // Floating point compare. defm : ICXWriteResPair<WriteFCmpX, [ICXPort01], 4, [1], 1, 6>; @@ -278,11 +278,11 @@ defm : ICXWriteResPair<WriteFComX, [ICXPort0], 2>; // Floating point compa defm : ICXWriteResPair<WriteFMul, [ICXPort01], 4, [1], 1, 5>; // Floating point multiplication. defm : ICXWriteResPair<WriteFMulX, [ICXPort01], 4, [1], 1, 6>; defm : ICXWriteResPair<WriteFMulY, [ICXPort01], 4, [1], 1, 7>; -defm : ICXWriteResPair<WriteFMulZ, [ICXPort05], 4, [1], 1, 7>; +defm : ICXWriteResPair<WriteFMulZ, [ICXPort0], 4, [1], 1, 7>; defm : ICXWriteResPair<WriteFMul64, [ICXPort01], 4, [1], 1, 5>; // Floating point double multiplication. defm : ICXWriteResPair<WriteFMul64X, [ICXPort01], 4, [1], 1, 6>; defm : ICXWriteResPair<WriteFMul64Y, [ICXPort01], 4, [1], 1, 7>; -defm : ICXWriteResPair<WriteFMul64Z, [ICXPort05], 4, [1], 1, 7>; +defm : ICXWriteResPair<WriteFMul64Z, [ICXPort0], 4, [1], 1, 7>; defm : ICXWriteResPair<WriteFDiv, [ICXPort0,ICXFPDivider], 11, [1,3], 1, 5>; // 10-14 cycles. // Floating point division. defm : ICXWriteResPair<WriteFDivX, [ICXPort0,ICXFPDivider], 11, [1,3], 1, 6>; // 10-14 cycles. |