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

Igor Kirillov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 17 04:39:09 PDT 2023


igor.kirillov added inline comments.


================
Comment at: llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp:340
 
-  if (!TL->isComplexDeinterleavingSupported()) {
+  if (!TL->isComplexDeinterleavingSupported(true) &&
+      !TL->isComplexDeinterleavingSupported(false)) {
----------------
mgabka wrote:
> 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. 
CMLA are not a problem - we are checking that scalar type is not **Int** in **AArch64TargetLowering::isComplexDeinterleavingOperationSupported**


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