The current sched model does not have proper numbers for many128-bit instructions. This patch is the first one which tries to fix this issue.
Details
Diff Detail
Event Timeline
We're adding a lot of instregex exntries just to get around the poor quality of the sched classes in X86Schedule.td - better to fix them?
lib/Target/X86/X86ScheduleBtVer2.td | ||
---|---|---|
602–613 | Shouldn't stores (mr) have a JSAGU dependency not a JLAGU | |
607 | Shouldn't stores (mr) have a JSAGU dependency not a JLAGU | |
612 | Shouldn't stores (mr) have a JSAGU dependency not a JLAGU? | |
621 | Remove ResourceCyles? Looks like the default. | |
623 | I wonder if we'd be better off introducing WriteVecLoad/WriteVecStore/WriteVecMove sched rw classes like the FIXME comment at line 140 suggests? | |
627 | Shouldn't stores (mr) have a JSAGU dependency? | |
629 | Should JLAGU be first for a load? | |
631 | Remove ResourceCyles? Looks like the default. | |
649 | Would we be better off introducing a WriteFCmp sched rw class to cover max/min and cmp? | |
694 | Don't include commented out lines. | |
700 | Don't include commented out lines. |
It seems I missed this comment: what do you mean here? I suppose it is what you wrote in PR17367. Am I right? If yes I could try to make the first steps in this direction but obviously the patch will increase in this case because:
- we're going to add the common classes;
- as result we'll be forced to fix several models simulteniously.
Is it OK?
lib/Target/X86/X86ScheduleBtVer2.td | ||
---|---|---|
592 | The MULPS versions don't seem to be necessary - they match the WriteFMul defaults - its just the MULPD versions we need. | |
610 | Please can you add the SSE4A MOVNTSDmr/MOVNTSSmr cases here? Note they don't have a V prefix. | |
620 | Are the moves doing anything at all? I didn't see any changes to the schedule tests. If not just remove this |
I removed WriteVecLoad as RKSimon required: it did not have any influence on cost numbers.
The MULPS versions don't seem to be necessary - they match the WriteFMul defaults - its just the MULPD versions we need.