[PATCH] D147451: [CodeGen] Enable AArch64 SVE FCMLA/FCADD instruction generation in ComplexDeinterleaving

mgabka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 17 01:44:54 PDT 2023


mgabka added inline comments.


================
Comment at: llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp:340
 
-  if (!TL->isComplexDeinterleavingSupported()) {
+  if (!TL->isComplexDeinterleavingSupported(true) &&
+      !TL->isComplexDeinterleavingSupported(false)) {
----------------
dmgreen wrote:
> I don't think this needs to call with a Scalable flag. The AArch64TargetLowering::isComplexDeinterleavingSupported routine can just return true if it has sve or complexnums.
The isComplexDeinterleavingSupported  with a flag is used inside   isComplexDeinterleavingOperationSupported  to check if for given vector type (scalable or fixed width) we have required architecture extensions avaialble.
For scalable vectors we need just sve, while for fixed width we need to have the ComplxNum feature.

However I realized that there is probably a bug here, as the SVE feature enables only scalable FCMLA, while scalable CMLA are available only when SVE2 feature is enabled, so I think we should make sure that isComplexDeinterleavingOperationSupported takes that into account and add extra testing.

I guess what David suggest is to make "isComplexDeinterleavingSupported" function as generic as possible and leave all the detailed checks to  isComplexDeinterleavingOperationSupported , what looks reasonable to me. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D147451



More information about the llvm-commits mailing list