aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2024-02-13 08:22:39 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2024-02-13 08:22:51 +0000
commit0e16950e741aee7ffec865c81596e1411471475e (patch)
treebeb81c02e3a32ebdacd0f198b74623da6022a690 /llvm/lib
parentd57515bd107bc76df5a042ffee2b7dc6125ffef1 (diff)
downloadllvm-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.td8
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.