[PATCH] D146218: [AArch64][CodeGen] Lower (de)interleave2 intrinsics to ld2/st2
mgabka via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 26 03:07:07 PDT 2023
mgabka added inline comments.
================
Comment at: llvm/lib/CodeGen/InterleavedAccessPass.cpp:116
SmallVector<Instruction *, 32> &DeadInsts);
+ bool lowerDeinterleaveIntrinsic(IntrinsicInst *II,
----------------
perhaps adding a comment to this and the other function below would be a good idea, at least consistent with the other lowerinterleaved* functions
================
Comment at: llvm/lib/CodeGen/InterleavedAccessPass.cpp:477
+ IntrinsicInst *II, SmallVector<Instruction *, 32> &DeadInsts) {
+ if (!II->hasOneUse())
+ return false;
----------------
could you explain why you are checking it here but not for lowerDeinterleaveIntrinsic?
================
Comment at: llvm/lib/CodeGen/InterleavedAccessPass.cpp:521
+ if (auto *II = dyn_cast<IntrinsicInst>(&I)) {
+ if (II->getIntrinsicID() == Intrinsic::experimental_vector_deinterleave2)
+ Changed |= lowerDeinterleaveIntrinsic(II, DeadInsts);
----------------
I think it is worth to add a comment here explaining why we restrict this operation only to VF=2
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:14765
+ if (EC.isScalable()) {
+ UseScalable = true;
+ return isPowerOf2_32(MinElts) && (MinElts * ElSize) % 128 == 0;
----------------
is it correct to set it here to true or only if the condition below is true?
from what I can see, before UseScalable was only set to true if this function was returning true
================
Comment at: llvm/test/Transforms/InterleavedAccess/AArch64/fixed-deinterleave-intrinsics.ll:3
+; RUN: opt < %s -interleaved-access -S | FileCheck %s --check-prefix=NEON
+; RUN: opt < %s -interleaved-access -mtriple=aarch64-linux-gnu -mattr=+sve -force-streaming-compatible-sve -S | FileCheck %s --check-prefix=SVE-FIXED
+
----------------
is "-force-streaming-compatible-sve" needed here? I thought that this transformation should happen always for sve, the tests for scalable vectorization have only "target-features"="+sve" added. am I missing something?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146218/new/
https://reviews.llvm.org/D146218
More information about the llvm-commits
mailing list