[PATCH] D146988: [CodeGen] Enable processing of interconnected complex number operations

Nicholas Guy via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 4 07:12:11 PDT 2023


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

LGTM

In D146988#4227451 <https://reviews.llvm.org/D146988#4227451>, @igor.kirillov wrote:

> As FCMLA/FCADD are vector instructions, our focus is mainly on vector loops. Therefore, I think it is more beneficial to perform this check on a BasicBlock level rather then a Function level. Alternatively, we could apply this pass per Loop, but this would result in losing support for some Neon cases that can be generated by the autovectorizer outside of a loop.

That makes sense in this case, but keep in mind that scalar loops (or in the case of neon & complex doubles, even non-looping operations) can be lowered to use xcmla/xcadd, I'm not sure we should rely on the concept of a loop for this. 
The scalar loops and co. are something that we can look into in the future though, trying to do so now will only complicate things and bloat the patch.



================
Comment at: llvm/test/CodeGen/AArch64/complex-deinterleaving-multiuses.ll:2
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s --mattr=+complxnum,+neon,+fullfp16 -o - | FileCheck %s
+
----------------
Nit: Probably don't need `+fullfp16` in this test, as `half` isn't being used.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D146988



More information about the llvm-commits mailing list