[PATCH] D74000: [X86] Improve the gather scheduler models for SkylakeClient and SkylakeServer

Andrea Di Biagio via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 5 04:19:27 PST 2020


andreadb added a comment.

> I've added avx512 gather instructions to llvm-mca resource tests. I wanted to pre-commit them, but since some of them have 0 uops in the existing data, llvm-mca gave an error.

Field NumMicroOpcodes is currently used by mca to model the number of uOPs dispatched from the uOp-Queue to the out of order backend.
>From a 'dispatch' point of view, an instruction with zero opcodes is still valid; it simply doesn't consume any dispatch group slots.

However, mca doesn't expect an instruction with zero uOPs to consume pipeline resources. That is seen as a contradiction in practice; it makes sense only if the instruction is always eliminated and never really executed. Maybe mca is being too conservative here. However I believe that we should check this in the subtarget emitter when we verify the scheduling info from tablegen (I'll raise a bug about it).

What I can do in the short term is to remove the check for MayLoad and MayStore in mca (I have a patch ready for it). That check is too conservative, since we were already test if an instruction consumes processor resources in general. That is enough to fix the issue that you saw with zero uOP gathers.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74000/new/

https://reviews.llvm.org/D74000





More information about the llvm-commits mailing list