[llvm] [AArch64][SDAG] Generate TBL for shuffles in single block loops. (PR #227593)

David Green via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 3 23:49:11 PDT 2026


================
@@ -16063,6 +16063,14 @@ SDValue AArch64TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op,
                     DAG.getNode(AArch64ISD::NVCAST, DL, BSVT, V1)));
   }
 
+  auto preferTBLToMultiInstrShuffle = [&]() {
+    if (DAG.shouldOptForSize())
+      return false;
+    // Look for a simple single block loop.
+    const BasicBlock *Block = DAG.getBasicBlock();
----------------
davemgreen wrote:

There is already a use of the Block inside shouldOptForSize which ends up here: https://github.com/llvm/llvm-project/blob/e3afe37ec59c4c5f689e2c92bd0b6f16cabf6fbf/llvm/lib/Transforms/Utils/SizeOpts.cpp#L72
So I assumed it was OK in practice from SDAG.

https://github.com/llvm/llvm-project/pull/227593


More information about the llvm-commits mailing list