This is an archive of the discontinued LLVM Phabricator instance.

[X86][SKX] Adding scheduling info of non-intrinsic + commutable SKX opcodes.
ClosedPublic

Authored by gadi.haber on Nov 9 2017, 1:14 AM.

Details

Summary

Updated the scheduling information of the SKX subtarget in the file X86SchedSkylakeServer.td under lib/Target/X86 to:

  1. add regular opcodes in addition to the suffixed "_Int" opcodes
  2. add the (V)MAXCPD/MAXCPS/MAXCSD/MAXCSS/MINCPD/MINCPS/MINCSD/MINCSS instructions that are equivalent to their counterparts without the 'C' as they are part of a hack to make floating point min/max commutable under fast math.

Diff Detail

Repository
rL LLVM

Event Timeline

gadi.haber created this revision.Nov 9 2017, 1:14 AM
craig.topper edited edge metadata.Nov 9 2017, 8:13 AM

We should have scheduling information for both forms. They are both used by isel and both make it all the way to code emission.

Updated diff following Craig's comment.

This revision is now accepted and ready to land.Nov 12 2017, 1:09 AM

Because I noticed while looking at this. Can you also add the (V)MAXCPD/MAXCPS/MAXCSD/MAXCSS/MINCPD/MINCPS/MINCSD/MINCSS instructions. They're equivalent to their counterparts with out the 'C'. They are part of a hack to make floating point min/max commutable under fast math.

Updated diff file after adding the following instructions to the SKX scheduling file:
(V)MAXCPD/MAXCPS/MAXCSD/MAXCSS/MINCPD/MINCPS/MINCSD/MINCSS

Sorry, I didn't necessarily mean to add MIN/MAX to this patch. I assume they are missing from all scheduling models.

gadi.haber retitled this revision from [X86][SKX] Replace scheduling info of intrinsic SKX opcodes by the non-intrinsic opcodes. to [X86][SKX] Adding scheduling info of non-intrinsic + commutable SKX opcodes..Nov 13 2017, 12:36 AM
gadi.haber edited the summary of this revision. (Show Details)

Updated diff after rebase

This revision was automatically updated to reflect the committed changes.