[PATCH] D114642: [AArch64][SchedModels] Handle virtual registers in FP/NEON predicates

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 14 01:14:38 PST 2022


dmgreen accepted this revision.
dmgreen added a comment.
This revision is now accepted and ready to land.

In D114642#3314092 <https://reviews.llvm.org/D114642#3314092>, @kpdev42 wrote:

> @dmgreen
>
>> Is it possible to a better example? COPY instructions (especially no-op copys like these) are often expected to be removed by reg-alloc and any scheduling info you give them is likely misleading.”
>
> Well, after some further studying of Exynos M5 model the only instruction group where Q-Form predicate us used is FMINV/FMAXV/FMAXNMV/FMINNMV:
>
>   def : InstRW<[M5WriteNEONZ],  (instregex "^F(MAX|MIN)(NM)?Vv")>;
>
> Q-Form of these instructions can be detected by operand 1, not operand 0. For instance default write resource for “fmaxv h0, v1.4h” is WriteVd and WriteVq for “fmaxv s0, v1.4s”. That’s why we’re now scanning all operands instead of just operand 0 (and both isFpOrNeon and isQForm can probably be considered general). See updated test case. Thank you!

I see. Perhaps it is sometimes clearer to be explicit in the schedule with opcode matching.

This looks like an improvement in either case, so LGTM.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D114642



More information about the llvm-commits mailing list