Skip to content

Commit 0e16950

Browse files
committed
[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
1 parent d57515b commit 0e16950

File tree

3 files changed

+162
-162
lines changed

3 files changed

+162
-162
lines changed

llvm/lib/Target/X86/X86SchedIceLake.td

+4-4
Original file line numberDiff line numberDiff line change
@@ -257,11 +257,11 @@ defm : X86WriteRes<WriteEMMS, [ICXPort05,ICXPort0156], 10, [9,1], 10>;
257257
defm : ICXWriteResPair<WriteFAdd, [ICXPort01], 4, [1], 1, 5>; // Floating point add/sub.
258258
defm : ICXWriteResPair<WriteFAddX, [ICXPort01], 4, [1], 1, 6>;
259259
defm : ICXWriteResPair<WriteFAddY, [ICXPort01], 4, [1], 1, 7>;
260-
defm : ICXWriteResPair<WriteFAddZ, [ICXPort05], 4, [1], 1, 7>;
260+
defm : ICXWriteResPair<WriteFAddZ, [ICXPort0], 4, [1], 1, 7>;
261261
defm : ICXWriteResPair<WriteFAdd64, [ICXPort01], 4, [1], 1, 5>; // Floating point double add/sub.
262262
defm : ICXWriteResPair<WriteFAdd64X, [ICXPort01], 4, [1], 1, 6>;
263263
defm : ICXWriteResPair<WriteFAdd64Y, [ICXPort01], 4, [1], 1, 7>;
264-
defm : ICXWriteResPair<WriteFAdd64Z, [ICXPort05], 4, [1], 1, 7>;
264+
defm : ICXWriteResPair<WriteFAdd64Z, [ICXPort0], 4, [1], 1, 7>;
265265

266266
defm : ICXWriteResPair<WriteFCmp, [ICXPort01], 4, [1], 1, 5>; // Floating point compare.
267267
defm : ICXWriteResPair<WriteFCmpX, [ICXPort01], 4, [1], 1, 6>;
@@ -278,11 +278,11 @@ defm : ICXWriteResPair<WriteFComX, [ICXPort0], 2>; // Floating point compa
278278
defm : ICXWriteResPair<WriteFMul, [ICXPort01], 4, [1], 1, 5>; // Floating point multiplication.
279279
defm : ICXWriteResPair<WriteFMulX, [ICXPort01], 4, [1], 1, 6>;
280280
defm : ICXWriteResPair<WriteFMulY, [ICXPort01], 4, [1], 1, 7>;
281-
defm : ICXWriteResPair<WriteFMulZ, [ICXPort05], 4, [1], 1, 7>;
281+
defm : ICXWriteResPair<WriteFMulZ, [ICXPort0], 4, [1], 1, 7>;
282282
defm : ICXWriteResPair<WriteFMul64, [ICXPort01], 4, [1], 1, 5>; // Floating point double multiplication.
283283
defm : ICXWriteResPair<WriteFMul64X, [ICXPort01], 4, [1], 1, 6>;
284284
defm : ICXWriteResPair<WriteFMul64Y, [ICXPort01], 4, [1], 1, 7>;
285-
defm : ICXWriteResPair<WriteFMul64Z, [ICXPort05], 4, [1], 1, 7>;
285+
defm : ICXWriteResPair<WriteFMul64Z, [ICXPort0], 4, [1], 1, 7>;
286286

287287
defm : ICXWriteResPair<WriteFDiv, [ICXPort0,ICXFPDivider], 11, [1,3], 1, 5>; // 10-14 cycles. // Floating point division.
288288
defm : ICXWriteResPair<WriteFDivX, [ICXPort0,ICXFPDivider], 11, [1,3], 1, 6>; // 10-14 cycles.

0 commit comments

Comments
 (0)